Selection de plusieur ligne

sam149 -  
 sam149 -
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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonsoir

    essaies avec la méthode UNION

    application.union (Cells(a, 1), Cells(a, 40), Cells(b, 1), Cells(b, 40)).select
    0
  2. sam149
     
    ç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
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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. sam149
       
      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
  4. sam149
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    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
  7. sam149
     
    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
  8. sam149
     
    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
  9. Utilisateur anonyme
     
    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. sam149
       
      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
  10. Utilisateur anonyme
     
    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
  11. Utilisateur anonyme
     
    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. sam149
       
      ok merci pour tout
      0