Macro excel :selection d'une plage de cellule

Fermé
Von lebaron Messages postés 7 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 16 novembre 2007 - 8 nov. 2007 à 08:48
 Eruel - 26 nov. 2009 à 20:42
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
A voir également:

8 réponses

Papou93 Messages postés 146 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 5 juin 2012 59
8 nov. 2007 à 22:48
Bonsoir Von lebaron, gbinforme,

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.
4
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 259
9 nov. 2007 à 00:27
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
2
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 718
8 nov. 2007 à 09:21
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.
@+
1
Von lebaron Messages postés 7 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 16 novembre 2007 1
9 nov. 2007 à 12:11
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
1

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

Posez votre question
Von lebaron Messages postés 7 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 16 novembre 2007 1
8 nov. 2007 à 10:06
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
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 259
9 nov. 2007 à 12:32
Je ne me sert pas du solveur mais est-ce qu'il ne voudrait pas du ; à la place de la , comme séparateur ?
0
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
0
Personne pour donner un coup de pouce ?
-1