locked
Problème de sélection de la plage effectivement utilisée RRS feed

  • Question

  • Bonjour à tous,

    Je début dans la programmation des outils pour office. Je suis confronté à problème au niveau de mon code. Je souhaiterais sélectionner par code la plage de cellules effectivement utilisées sur ma feuille de calcul.
    J'utilise visual studio 2008 et je code en vb.net.

    Merci pour vos réponses.
    mercredi 18 novembre 2009 08:52

Réponses

  • voici le code que j'utilise magikdev .

    attention declare :

    1/ ta forme topmost(premier plan)  comme suit

    maforme.topmost=true   '(premier plan) sinon elle disparait pour l'utilisateur

    2/ methode n° 1: une  variables publique  range pour recuperer le "range" selectionne  dans la feuille 1(office 2003 fr)

    2/ methode n° 2: une  variables publique  range pour recuperer le "range" selectionne  dans la pour recuperer la selection dans la feuille 1(office 2003 fr) et une variable object associe au range (contiendra au retour les valeurs du "range" qui est un tableau dans excel.la variable objet est un un "veritable table variant comme dans VBA"

    remarque : tu peux aussi recuperer par la meme ocassion l' adresse du range(range.address pour deplacer ou copier le range par exemple)  

    voici le code (2 boutons et 2 textbox ) pour recuper  les valeurs de la selection et bon courage:

    1/pour la feuille

    Public

     

    Class Feuil1

     

    Dim frm As maForme

     

     

    Private Sub Feuil1_SelectionChange(ByVal Target As Microsoft.Office.Interop.Excel.Range) Handles Me.SelectionChange

     

    'lire le range retourne par argument Target et sa valeur

    frm.monRng = Target

    frm.objRngSel = Target.Value

     

    End Sub

     

    Private Sub Feuil1_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup

    frm =

    New maForme

    frm.Show()

    frm.TopMost =

    True

     

    End Sub

     

    Private Sub Feuil1_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shutdown

     

    End Sub

    End

     

    Class

    2/pour la forme

    Public

     

    Class maForme

     

    'declare une variable pour recuperer range selectionne

     

    Public monRng As Excel.Range

     

    'declare une variable objet pour valeurs du range(range=tableau n'est ce pas)

     

    Public objRngSel As New Object

     

    Public Sub New()

     

    ' Cet appel est requis par le Concepteur Windows Form.

    InitializeComponent()

     

    ' Ajoutez une initialisation quelconque aprŠs l'appel InitializeComponent().

     

    End Sub

     

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnObtientRange1.Click

     

    Dim numlig As Integer = 0

     

    Dim numcol As Integer = 0

    numlig = monRng.Rows.Count

    numcol = monRng.Columns.Count

    txtPlage1.Text =

    ""

     

    'methode utlisant variable objet renvoye ( tableau genre variant)

     

    For I As Integer = 1 To numlig

     

    For J As Integer = 1 To numcol

    txtPlage1.Text = txtPlage1.Text & objRngSel(I, J).ToString

     

    Next

     

    Next

     

     

     

    End Sub

     

     

    Private Sub btnObtientRange2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnObtientRange2.Click

     

    Dim numlig As Integer = 0

     

    Dim numcol As Integer = 0

    numcol = monRng.Columns.Count

    numlig = monRng.Rows.Count

     

    'methode utlisant objet range avec balayage cellule (temps plus grand si nbre de cellules consequent)

     

    For I As Integer = 1 To numlig

     

    For J As Integer = 1 To numcol

    txtPlage2.Text = txtPlage2.Text & monRng.Cells(I, J).value

     

    Next

     

    Next

     

    End Sub

    End

     

    Class

     

     

       

    • Marqué comme réponse magikdev jeudi 17 juin 2010 17:25
    vendredi 7 mai 2010 03:25

Toutes les réponses

  • voici le code que j'utilise magikdev .

    attention declare :

    1/ ta forme topmost(premier plan)  comme suit

    maforme.topmost=true   '(premier plan) sinon elle disparait pour l'utilisateur

    2/ methode n° 1: une  variables publique  range pour recuperer le "range" selectionne  dans la feuille 1(office 2003 fr)

    2/ methode n° 2: une  variables publique  range pour recuperer le "range" selectionne  dans la pour recuperer la selection dans la feuille 1(office 2003 fr) et une variable object associe au range (contiendra au retour les valeurs du "range" qui est un tableau dans excel.la variable objet est un un "veritable table variant comme dans VBA"

    remarque : tu peux aussi recuperer par la meme ocassion l' adresse du range(range.address pour deplacer ou copier le range par exemple)  

    voici le code (2 boutons et 2 textbox ) pour recuper  les valeurs de la selection et bon courage:

    1/pour la feuille

    Public

     

    Class Feuil1

     

    Dim frm As maForme

     

     

    Private Sub Feuil1_SelectionChange(ByVal Target As Microsoft.Office.Interop.Excel.Range) Handles Me.SelectionChange

     

    'lire le range retourne par argument Target et sa valeur

    frm.monRng = Target

    frm.objRngSel = Target.Value

     

    End Sub

     

    Private Sub Feuil1_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup

    frm =

    New maForme

    frm.Show()

    frm.TopMost =

    True

     

    End Sub

     

    Private Sub Feuil1_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shutdown

     

    End Sub

    End

     

    Class

    2/pour la forme

    Public

     

    Class maForme

     

    'declare une variable pour recuperer range selectionne

     

    Public monRng As Excel.Range

     

    'declare une variable objet pour valeurs du range(range=tableau n'est ce pas)

     

    Public objRngSel As New Object

     

    Public Sub New()

     

    ' Cet appel est requis par le Concepteur Windows Form.

    InitializeComponent()

     

    ' Ajoutez une initialisation quelconque aprŠs l'appel InitializeComponent().

     

    End Sub

     

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnObtientRange1.Click

     

    Dim numlig As Integer = 0

     

    Dim numcol As Integer = 0

    numlig = monRng.Rows.Count

    numcol = monRng.Columns.Count

    txtPlage1.Text =

    ""

     

    'methode utlisant variable objet renvoye ( tableau genre variant)

     

    For I As Integer = 1 To numlig

     

    For J As Integer = 1 To numcol

    txtPlage1.Text = txtPlage1.Text & objRngSel(I, J).ToString

     

    Next

     

    Next

     

     

     

    End Sub

     

     

    Private Sub btnObtientRange2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnObtientRange2.Click

     

    Dim numlig As Integer = 0

     

    Dim numcol As Integer = 0

    numcol = monRng.Columns.Count

    numlig = monRng.Rows.Count

     

    'methode utlisant objet range avec balayage cellule (temps plus grand si nbre de cellules consequent)

     

    For I As Integer = 1 To numlig

     

    For J As Integer = 1 To numcol

    txtPlage2.Text = txtPlage2.Text & monRng.Cells(I, J).value

     

    Next

     

    Next

     

    End Sub

    End

     

    Class

     

     

       

    • Marqué comme réponse magikdev jeudi 17 juin 2010 17:25
    vendredi 7 mai 2010 03:25
  • Merci pour ton aide reponse CEPARADOXE, je commençais à désespérer. Je la test et je te fait un retour.
    jeudi 17 juin 2010 17:29