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
A voir également:

10 réponses

michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
bonsoir

essaies avec la méthode UNION

application.union (Cells(a, 1), Cells(a, 40), Cells(b, 1), Cells(b, 40)).select
0
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
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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
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
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
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
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
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
sam149
 
ok merci pour tout
0