Macro excel :selection d'une plage de cellule
Von lebaron
Messages postés
7
Statut
Membre
-
Eruel -
Eruel -
Bonjour,
je suis débutant en macro excel.
je souhaiterais effectuer une selection variable d'une plage de cellules en fonction de certaines conditions.
je m'explique :
dans la première colonne de mon tableau, j'ai une plage de 10 cellules. dans chaque cellule se trouve une checkbox.
pour chaque cellule, si la checkbox est cochée, la cellule doit etre selectionnée.
A la fin je souhaite recuperer la plage de cellule correspondant au checkbox coché.
j'espere que je suis pas trop confus!!!
voili voilou
merci d'avance
Von lebaron
je suis débutant en macro excel.
je souhaiterais effectuer une selection variable d'une plage de cellules en fonction de certaines conditions.
je m'explique :
dans la première colonne de mon tableau, j'ai une plage de 10 cellules. dans chaque cellule se trouve une checkbox.
pour chaque cellule, si la checkbox est cochée, la cellule doit etre selectionnée.
A la fin je souhaite recuperer la plage de cellule correspondant au checkbox coché.
j'espere que je suis pas trop confus!!!
voili voilou
merci d'avance
Von lebaron
A voir également:
- Macro excel :selection d'une plage de cellule
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
8 réponses
Bonsoir Von lebaron, gbinforme,
Cette macro atteint le but recherché :
PS : il faut définir la propriété LinkedCell de chaque CheckBox à la cellule correspondante en colonne 3 (dans mon exemple, mais on peut définir n'importe quelle autre colonne et la masquer) : on obtient ainsi VRAI si la CheckBox est cochée ou FAUX dans l'autre cas. Il est facile ensuite de récupérer cette valeur dans la boucle.
Petite précision : en code VBA, la séparation des cellules non contugües se définit avec "," au lieu de ";" dans les feuilles Excel.
Espérant avoir apporté un grain de sel utile.
Cordialement.
Cette macro atteint le but recherché :
Public Plage As String Public Sub SelPlage() Plage = "" For n = 1 To 4 If Cells(n, 3) Then Plage = Plage & "B" & n & "," Next If Right(Plage, 1) = "," Then Plage = Left(Plage, Len(Plage) - 1) Range(Plage).Select End Sub
PS : il faut définir la propriété LinkedCell de chaque CheckBox à la cellule correspondante en colonne 3 (dans mon exemple, mais on peut définir n'importe quelle autre colonne et la masquer) : on obtient ainsi VRAI si la CheckBox est cochée ou FAUX dans l'autre cas. Il est facile ensuite de récupérer cette valeur dans la boucle.
Petite précision : en code VBA, la séparation des cellules non contugües se définit avec "," au lieu de ";" dans les feuilles Excel.
Espérant avoir apporté un grain de sel utile.
Cordialement.
Bonsoir,
Pour présenter d'autres fonctions dans la boucle tu peux aussi utiliser ...then plage = Union(plage, cell(n, 3).Offset(0, -2)) en ayant défini plage as range (et supprimer les 2 dernières lignes)
eric
Pour présenter d'autres fonctions dans la boucle tu peux aussi utiliser ...then plage = Union(plage, cell(n, 3).Offset(0, -2)) en ayant défini plage as range (et supprimer les 2 dernières lignes)
eric
bonjour
A la fin je souhaite recuperer la plage de cellule correspondant au checkbox coché.
Tu dis toi même qu'il y a une checkbox dans chaque cellule et donc ce n'est pas une plage.
Tu souhaites récupérer où ?
C'est un peu confus effectivement tout cela, tu devrais reformuler tout à fait différemment ta question et en voyant les deux versions on arriverai plus facilement à comprendre.
@+
A la fin je souhaite recuperer la plage de cellule correspondant au checkbox coché.
Tu dis toi même qu'il y a une checkbox dans chaque cellule et donc ce n'est pas une plage.
Tu souhaites récupérer où ?
C'est un peu confus effectivement tout cela, tu devrais reformuler tout à fait différemment ta question et en voyant les deux versions on arriverai plus facilement à comprendre.
@+
Bonjour Papou93, eriiic, gbinforme
tout d'abord je vous remercie pour votre aide.
ca marche parfaitement désormais, la selection de plages non contigues se réalise.
j'ai un dernier petit souci, la plage de cellules selectionnée doit permettre de renseigner une plage de critère du solveur excel.
Mais le solveur ne reconnait pas "," il reconnait juste ":".
Je n'arrive donc pas à faire une selection de plages non contigues.
merci d'avance
Von lebaron
tout d'abord je vous remercie pour votre aide.
ca marche parfaitement désormais, la selection de plages non contigues se réalise.
j'ai un dernier petit souci, la plage de cellules selectionnée doit permettre de renseigner une plage de critère du solveur excel.
Mais le solveur ne reconnait pas "," il reconnait juste ":".
Je n'arrive donc pas à faire une selection de plages non contigues.
merci d'avance
Von lebaron
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour gbinforme,
tout d'abord merci de m'avoir répondu aussi rapidement.
je vais essayer d'etre moins confus.
voici mon tableau :
A B
1 chckbox1=true 10
2 chckbox2 12
3 chckbox3=true 13
4 chckbox3 17
dim i 'variable
Pour i = 1 à 4
si A(i)=true alors
selection de la cellule B(i)
fin
ensuite selection de la plage de cellule correspondant à une valeur de checkbox =true.
dans mon exemple, je souhaite recuperer la plage (B1;B3).
cette plage sera ensuite transféré au solveur excel comme plage de critère.
j'espere que c plus clair!
merci d'avance
Von lebaron
tout d'abord merci de m'avoir répondu aussi rapidement.
je vais essayer d'etre moins confus.
voici mon tableau :
A B
1 chckbox1=true 10
2 chckbox2 12
3 chckbox3=true 13
4 chckbox3 17
dim i 'variable
Pour i = 1 à 4
si A(i)=true alors
selection de la cellule B(i)
fin
ensuite selection de la plage de cellule correspondant à une valeur de checkbox =true.
dans mon exemple, je souhaite recuperer la plage (B1;B3).
cette plage sera ensuite transféré au solveur excel comme plage de critère.
j'espere que c plus clair!
merci d'avance
Von lebaron
Je ne me sert pas du solveur mais est-ce qu'il ne voudrait pas du ; à la place de la , comme séparateur ?
Je me permets de déterrer le sujet car je suis dans une situation similaire j'utilise le solveur pour resoudre des equations. Mes cellules variables ont un fond rouge et selon mon probleme ce ne sont pas les memes cellules qui doivent être résolues. J'ai essayé avec "for et "if" mais je ca ne marche pas je ne vois pas comment ajouter ma plage de cellule dans le solveur.
For Each Cell In Sheets("Feuil1").Range("B2:D16")
If Cell.Interior.Color = 255 Then
SolverOK SetCell:=Range("J2"), MaxMinVal:=3, ValueOf:=0,
ByChange:=Cell.Value
End If
Next
For Each Cell In Sheets("Feuil1").Range("B2:D16")
If Cell.Interior.Color = 255 Then
SolverOK SetCell:=Range("J2"), MaxMinVal:=3, ValueOf:=0,
ByChange:=Cell.Value
End If
Next