Selection de plusieur ligne

Bonjour,

je cherche à sélectionner plusieurs lignes en format (L,C). ces lignes ne sont pas toutes à la suite et dépendent de 5 variables rentrées par l'utilisateur dans 5 textbox
pour l'instant j'ai ça mais ça fonctionne pas bien sur sinon je serais pas là.
Worksheets("dossiers en cours").Range(Cells(a, 1), Cells(a, 40), Cells(b, 1), Cells(b, 40)).Select

merci d'avance
Configuration: Windows XP
Firefox 3.0.4

10 réponses

  1. Contributeur
    bonsoir

    essaies avec la méthode UNION

    application.union (Cells(a, 1), Cells(a, 40), Cells(b, 1), Cells(b, 40)).select
    0
    1. ça fonctionne un peut....
      je m'explique: avec cette méthode il sélectionne les quatre cellules (a,1) (a,40) et (b,1) (b,40).

      ce que je cherche à faire c'est sélectionner la plage sur la ligne a de la colonne 1 à 40 et idem pour la b (ça va même jusqu'à e mais si j'ai l'explication pour a et b je crois que je vais pouvoir l'étendre.)

      la solution que je vois serai de mettre l'adresse des 40*5 cellules potentielles mais bon ça commence à faire...
      doit avoir plus simple.

      merci pour ce première élément et d'avance pour les futurs
      0
      1. Contributeur
        Désolé, mais j'ai répondu à ta question...

        C'est AVANT d'envoyer ton message qu'il fallait réfléchir et expliquer...

        Ciaio
        0
        1. houa! t'es dure là....
          ;)
          oui j'ai peut etre pas été super clair. en même temps le titre du message est la sélection de plusieurs lignes et non cellules.
          en gros comme je ne suis pas super compétent sur vb je me suis inspiré de ça:
          Range("A18:L18,A21:L21,A29:L29").Select
          mais en format (L,C)
          heu...en relisant mon premier message j'ai quand même précisé que je voulais sélectionner des lignes et non des cellules. c'est juste mon code de base qui été pas bon sinon je serais pas là....

          merci à+
          0
      2. up
        michel dit que je ne réfléchie pas pourtant j'ai cherché toute la journée et n'ai pas trouvé. J'ai quant même bien défini ce que je voulais.
        michel t'a même retirer le cordialement dans ta signature...
        pourtant je cherche juste à m'informer pour m'améliorer comme ce que tu as dit dans des précédent message, que ce type de forum t'avais bcp apporter.

        voilà enfin si quelqu'un à une idée merci d'avance
        0
        1. Bonjour,

          Voici une suggestion :

          Option Explicit
          '
          
          Sub SelectionSpecial()
          
              Dim Plage As Range
              Dim Adresse As String
              
              Dim strNF As String
              
              strNF = "dossiers en cours"
              ' Construire par programmation la
              ' séquence des cellules à sélectionner
              ' dans la variable [ Adresse ]
              Adresse = "A1:A40,B1:B40"
              ' Définir la plage
              Set Plage = Sheets(strNF).Range(Adresse)
              ' Effectuer la sélection
              Plage.Select
              
          End Sub
          '
          


          Lupin
          0
          1. merci pour la réponse.
            je vais encore me faire taper sur les doigts car j'ai pas du expliquer comme il faut. en faite mon a et b sont des variables qui correspondent à ce que l'utilisateur entre dans des textbox.
            le code est le suivant:

            Private Sub CommandButton1_Click()
            Dim a As Integer
            Dim b As Integer
            Dim c As Integer
            Dim d As Integer
            Dim e As Integer

            Worksheets("dossiers en cours").Activate

            If UserForm1.TextBox1 = "" Or UserForm1.TextBox1 = 0 Then
            MsgBox "il faut enter le n° de la ligne", vbOKOnly, "attention"
            Exit Sub
            If UserForm1.texbox2 = "" Then
            MsgBox "il faut enter le n° de la ligne ou 0", vbOKOnly, "attention"
            Exit Sub
            If UserForm1.texbox3 = "" Then
            MsgBox "il faut enter le n° de la ligne ou 0", vbOKOnly, "attention"
            Exit Sub
            If UserForm1.texbox4 = "" Then
            MsgBox "il faut enter le n° de la ligne ou 0", vbOKOnly, "attention"
            Exit Sub
            If UserForm1.texbox4 = "" Then
            MsgBox "il faut enter le n° de la ligne ou 0", vbOKOnly, "attention"
            Exit Sub
            End If
            End If
            End If
            End If
            End If

            a = UserForm1.TextBox1
            b = UserForm1.TextBox1
            c = UserForm1.TextBox1
            d = UserForm1.TextBox1
            e = UserForm1.TextBox1

            Worksheets("dossiers en cours").Range(Cells(a, 1), Cells(a, 40), Cells(b, 1), Cells(b, 40), Cells(c, 1), Cells(c, 40), Cells(d, 1), Cells(d, 40)).Select
            Selection.Copy

            Worksheets("dossiers déposés").Activate

            i = 33

            While Not Range("p" & i & "").Value = ""

            i = i + 1

            Wend
            Cells(i, 1).Select
            ActiveSheet.Paste

            Worksheets("dossiers en cours").Activate
            Worksheets("dossiers en cours").Range(Cells(a, 1), Cells(a, 40), Cells(b, 1), Cells(b, 40), Cells(c, 1), Cells(c, 40), Cells(d, 1), Cells(d, 40)).Select
            Selection.Delete Shift:=xlUp
            Worksheets("dossiers déposés").Activate

            UserForm1.Hide
            End Sub

            merci d'avance
            0
            1. avec le bon code ce sera mieux désolé.
              ce qui ne va pas c'est dans la sélection quand il y a des valeur de textbox à 0 la ligne de selection devrait les ignorer.

              Private Sub CommandButton1_Click()
              Dim a As Integer
              Dim b As Integer
              Dim c As Integer
              Dim d As Integer
              Dim e As Integer
              
              Worksheets("dossiers en cours").Activate
              
              If UserForm1.TextBox1 = "" Or UserForm1.TextBox1 = 0 Then
                  MsgBox "il faut enter le n° de la ligne", vbOKOnly, "attention"
                  Exit Sub
                  If UserForm1.TextBox2 = "" Then
                      MsgBox "il faut enter le n° de la ligne", vbOKOnly, "attention"
                      Exit Sub
                      If UserForm1.TextBox3 = "" Then
                          MsgBox "il faut enter le n° de la ligne", vbOKOnly, "attention"
                          Exit Sub
                          If UserForm1.TextBox4 = "" Then
                              MsgBox "il faut enter le n° de la ligne", vbOKOnly, "attention"
                              Exit Sub
                              If UserForm1.TextBox5 = "" Then
                                  MsgBox "il faut enter le n° de la ligne", vbOKOnly, "attention"
                                  Exit Sub
                              End If
                          End If
                      End If
                  End If
              End If
              
              a = UserForm1.TextBox1
              b = UserForm1.TextBox2
              c = UserForm1.TextBox3
              d = UserForm1.TextBox4
              e = UserForm1.TextBox5
              
              
              Worksheets("dossiers en cours").Range(Cells(a, 1), Cells(a, 40), Cells(b, 1), Cells(b, 40), Cells(c, 1), Cells(c, 40), Cells(d, 1), Cells(d, 40)).Select
              Selection.Copy
              
              Worksheets("dossiers déposés").Activate
              
                i = 33
              
                  While Not Range("p" & i & "").Value = ""
              
                  i = i + 1
              
                  Wend
              Cells(i, 1).Select
              ActiveSheet.Paste
              
              Worksheets("dossiers en cours").Activate
              Worksheets("dossiers en cours").Range(Cells(a, 1), Cells(a, 40), Cells(b, 1), Cells(b, 40), Cells(c, 1), Cells(c, 40), Cells(d, 1), Cells(d, 40)).Select
              Selection.Delete Shift:=xlUp
              Worksheets("dossiers déposés").Activate
              
              UserForm1.Hide
              End Sub
              
              0
              1. re :

                exemple type :

                Private Sub cmd_Execute_Click()
                
                    Worksheets("dossiers en cours").Activate
                    
                    If UserForm1.TextBox1 = "" Or UserForm1.TextBox1 = 0 Then
                        MsgBox "il faut enter le n° de la ligne", vbOKOnly, "attention"
                        Exit Sub
                        If UserForm1.TextBox2 = "" Then
                            MsgBox "il faut enter le n° de la ligne", vbOKOnly, "attention"
                            Exit Sub
                            If UserForm1.TextBox3 = "" Then
                                MsgBox "il faut enter le n° de la ligne", vbOKOnly, "attention"
                                Exit Sub
                                If UserForm1.TextBox4 = "" Then
                                    MsgBox "il faut enter le n° de la ligne", vbOKOnly, "attention"
                                    Exit Sub
                                    If UserForm1.TextBox5 = "" Then
                                        MsgBox "il faut enter le n° de la ligne", vbOKOnly, "attention"
                                        Exit Sub
                                    End If
                                End If
                            End If
                        End If
                    End If
                
                    a = UserForm1.TextBox1
                    b = UserForm1.TextBox2
                    c = UserForm1.TextBox3
                    d = UserForm1.TextBox4
                    e = UserForm1.TextBox5
                
                
                    Adresse = "A" & a & ":AN" & a & ",A" & b & ":AN" & b
                    Adresse = Adresse & ",A" & c & ":AN" & c & ",A" & d & ":AN" & d
                    Set Plage = Range(Adresse)
                    Plage.Select
                    
                    'Worksheets("dossiers en cours").Range(Cells(a, 1), Cells(a, 40), Cells(b, 1), Cells(b, 40), Cells(c, 1), Cells(c, 40), Cells(d, 1), Cells(d, 40)).Select
                    Selection.Copy
                
                    Worksheets("dossiers déposés").Activate
                    i = 33
                    While Not Range("p" & i & "").Value = ""
                        i = i + 1
                    Wend
                    Cells(i, 1).Select
                    ActiveSheet.Paste
                
                    Worksheets("dossiers en cours").Activate
                    Worksheets("dossiers en cours").Range(Cells(a, 1), Cells(a, 40), Cells(b, 1), Cells(b, 40), Cells(c, 1), Cells(c, 40), Cells(d, 1), Cells(d, 40)).Select
                    Selection.Delete Shift:=xlUp
                    Worksheets("dossiers déposés").Activate
                
                    UserForm1.Hide
                    
                End Sub
                '
                

                Lupin
                0
                1. merci beaucoup, ça m'avance grandement.!!!
                  cependant j'ai du mal avec ce système là de notation :"A" & a & ":AN" & a & " connaitrais-tu un tutoriel/cours pour ça?

                  en tout cas merci
                  0
              2. re:

                Utilise l'enregistreur de macro de Excel

                -> // Menu / Outils / Macro / Nouvelle macro ...

                Effectue la sélection de différente cellule comme tu voudrais le faire dans ta macro.

                Va voir le code :

                Tu obtiendra quelque chose comme :

                Range("A2:AN2,A6:AN6,A10:AN10").Select

                d'où la partie [ "A2:AN2,A6:AN6,A10:AN10" ] peut-être reconstitué facilement
                comme une chaine de caractère avec le symbole de concaténation [ & ].

                ici dans cette exemple, il faut remplacer 2 par a, 6 par b et 10 par c

                "A" & a & ":AN" & a & ",A" & b & ":AN" & b & ",A" & c & ":AN" & c

                d'où :

                ' Place un espion sur la variable [ Adresse ] pour en valider la structure.

                Adresse = "A" & a & ":AN" & a & ",A" & b & ":AN" & b & ",A" & c & ":AN" & c

                Set Plage = Range(Adresse)

                Lupin
                0
                1. re:

                  Je suis désolé, j'ai poussé ma façon de penser plutôt que de répondre à ta question :-(

                  Un tutoriel , voilà ta question :-)

                  Recherche avec ces mots clés :
                  De base       :  [ Expression Régulières ]
                  Intermédiaire :  [ Expression SQL ]
                  Avancée       :  [ Expression XML ]
                  

                  Les expressions régulières sont utilisées dans les expression SQL qui elles sont utilisées
                  dans des expressions XML. Bon c'est un portrait très grossier, mais cela devrait bien guider
                  tes recherches dans la bonne direction.

                  Lupin
                  0
                  1. ok merci pour tout
                    0