selectionner une plage

  • Initiateur de la discussion Initiateur de la discussion eduraiss
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Re : selectionner une plage

Bonjour Eduraiss,

Peut-être ai-je mal compris, mais si tu veux sélectionner en fonction du "remplissage" des colonnes AE à AG, il suffit de placer dans le code de ton bouton:

Code:
Range("AD3:AG" & Range("AG65536").End(xlUp).Row).Select

Bonne journée
 
Re : selectionner une plage

Re,
Autant pour moi, j'étais partit du principe que la colonne AG était remplie uniquement si celles avant l'étaient également.

Peut-être comme ceci alors:

Code:
Dim tabl As Variant
tabl = Array(Range("AD65536").End(xlUp).Row, Range("AE65536").End(xlUp).Row, Range("AF65536").End(xlUp).Row, Range("AG65536").End(xlUp).Row)
'pour chacun des éléments,
For num = 0 To 3
'on s'assure qu'aucun des éléments qui le suit ne lui est inférieur
For num2 = num + 1 To 3
'sinon, on échange les deux éléments
If tabl(num) > tabl(num2) Then
old = tabl(num)
old2 = tabl(num2)
tabl(num) = old2
tabl(num2) = old
End If
Next num2
Next num
Range("AD3:AG" & tabl(0)).Select

Toujours dans le code de ton bouton.
Inspiré de:
Formation Excel
 
Re : selectionner une plage

Re,

Si il ne faut pas prendre en compte la colonne AD dans la sélection; il suffit de redimensionner le tableau comme ceci :

Code:
Private Sub CommandButton1_Click()
Dim tabl As Variant
tabl = Array(Range("AE65536").End(xlUp).Row, Range("AF65536").End(xlUp).Row, Range("AG65536").End(xlUp).Row)
'pour chacun des éléments,
For num = 0 To 2
'on s'assure qu'aucun des éléments qui le suit ne lui est inférieur
For num2 = num + 1 To 2
'sinon, on échange les deux éléments
If tabl(num) > tabl(num2) Then
old = tabl(num)
old2 = tabl(num2)
tabl(num) = old2
tabl(num2) = old
End If
Next num2
Next num
Range("AD3:AG" & tabl(0)).Select

End Sub

Du coup la sélection se fera si les colonnes AE à AG sont remplies, même si AD ne l'est pas !
 
Re : selectionner une plage

Bonjour le fil, bonjour le forum,

En pièce jointe ton fichier modifié avec le code ci-desous :
Code:
Sub Macro1()
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (Plage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim ps As Range 'déclare la variable ps (Plage de Sélection)

With Sheets("Feuil1") 'prend en compte l'onglet "" Feuil1"
    dl = .Cells(Application.Rows.Count, 30).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne AD
    Set pl = Range("AD3:AD" & dl) 'définit la plage pl
    Set ps = .Range("AD2") 'définit la plage ps (pour avoir au moins une plage de départ)
End With 'fin de la prise en compte de l'onglet "Feuil1"
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    'condition : si le nombre de valeurs dans la cellule cel plus les 3 cellules à coté est égal à 4
    If Application.WorksheetFunction.CountA(cel.Resize(, 4)) = 4 Then
        'redéfinit la plage ps (la ligne de cel si ps ne contient qu'une seule cellule, sinon ajoute la ligne de cel à ps)
        Set ps = IIf(ps.Cells.Count = 1, cel.Resize(, 4), Application.Union(ps, cel.Resize(, 4)))
    End If 'fin de la condition
Next cel 'prochaine cellule de la boucle
ps.Select 'sélectionne la plage ps
End Sub
Le fichier :
 

Pièces jointes

Re : selectionner une plage

Bonjour le fil, bonjour le forum,

Il suffisait de rajouter une ligne !
Code:
 If dl < 3 Then Exit Sub
Je ne comprends pas qu'avec le code tel que je le commente tu sois incapable de le faire toi-même... C'est grave !
Le code :
Code:
Sub Macro1()
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (Plage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim ps As Range 'déclare la variable ps (Plage de Sélection)
With Sheets("Feuil1") 'prend en compte l'onglet "" Feuil1"
    dl = .Cells(Application.Rows.Count, 30).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne AD
    If dl < 3 Then Exit Sub
    Set pl = Range("AD3:AD" & dl) 'définit la plage pl
    Set ps = .Range("AD2") 'définit la plage ps (pour avoir au moins une plage de départ)
End With 'fin de la prise en compte de l'onglet "Feuil1"
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    'condition : si le nombre de valeurs dans la cellule cel plus les 3 cellules à coté est égal à 4
    If Application.WorksheetFunction.CountA(cel.Resize(, 4)) = 4 Then
        'redéfinit la plage ps (la ligne de cel si ps ne contient qu'une seule cellule, sinon ajoute la ligne de cel à ps)
        Set ps = IIf(ps.Cells.Count = 1, cel.Resize(, 4), Application.Union(ps, cel.Resize(, 4)))
    End If 'fin de la condition
Next cel 'prochaine cellule de la boucle
ps.Select 'sélectionne la plage ps
End Sub
 
Re : selectionner une plage

Re Erudaiss, Bonjour Robert,

Je suis pour ma part un peu perdu, je ne comprends pas de ce que tu cherches à faire.
Pourrais-tu reposer ton problème avec quelle plage tu veux sélectionner en fonction de quels critères?


EDIT : Autant pour moi Robert à tout compris ! 🙂
Bonne soirée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
264
  • Question Question
Microsoft 365 Problème macro
Réponses
4
Affichages
433
  • Question Question
XL 2021 MFC
Réponses
22
Affichages
429
Réponses
13
Affichages
338
Retour