Checkbox et macro excel

Fermé
jeanraoul65 Messages postés 11 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 16 mars 2009 - 12 mars 2009 à 12:03
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 - 12 mars 2009 à 22:49
Bonjour,

J'ai une feuille excel avec une colone (D) remplie de checkbox. J'aimerai creer une macro qui vienne copier dans un autre onglet que ma feuille de départ , les infos contenues dans les cellules (A,B,C) des lignes comportant une checkbox validée (dont la valeur est true). En théorie je pense qu'il faut faire une boucle qui parcours la colonne contenant les checkbox et ensuite copier les cellules vers l'autre onglet... en pratique je suis archi novice en VBA..

Merci d'avance si vous pouvez m'aider à la conception de cette macro
A voir également:

11 réponses

Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
12 mars 2009 à 17:37
Bonjour,
Avec un exemple se serait plus simple de comprendre .... !
Que faut-il comprendre par : une colonne (D) remplie de checkbox ... ?
0
jeanraoul65 Messages postés 11 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 16 mars 2009
12 mars 2009 à 17:55
Cela veut dire que chaque cellules de la colonne D comporte une checkbox.

Par exemple si les cellules D4 et D7 sont cochées , je veux que les cellules A4,B4,C4,A7,B7,C7 soient copiées par la macro sur une autre feuille

J'espère etre assez clair.
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
12 mars 2009 à 18:16
Bonjour,
Oui et non, à quelle endroit sur l'autre feuille ?
Est-ce que cette feuille existe ou faut-il la créer ?
0
jeanraoul65 Messages postés 11 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 16 mars 2009
12 mars 2009 à 18:35
Bonjour Jean Pierre

Mon prolème ce n'est pas tant la méthode pour copier les valeurs d'une feuille à l'autre ( ca j'ai réussi grace à une modif d'une de mes anciennes macro) , c'est vraiment la partie test de l'information contenue dans les checkbox, cad comment faire la boucle pour parcourir l'ensemble des checkbox de la colonne D et déterminer les numéros des lignes de celles qui sont actuellement cochées.

Merci pour tes réponses rapide
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 255
12 mars 2009 à 18:49
Bonsoir,

tu sais, ça serait bcp plus simple avec des x dans les cellules, quitte à faire une macro qui te le met et l'enlève avec un double-clic...
eric
0

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

Posez votre question
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
12 mars 2009 à 19:15
Bonjour,
Voici la macro pour la première case à cocher ( cellule "D1")

Sub Caseàcocher1_Clic()
If Range("D1").Value = Faux Then Exit Sub ' case décochée, ne rien faire
Range("A1:C1").Copy Destination:=Sheets("Feuil2").Range("a1:c1")
End Sub

La répéter en incrémentant les numéros de ligne , exemple pour la "D2"

Sub Caseàcocher2_Clic()
If Range("D2").Value = Faux Then Exit Sub ' case décochée, ne rien faire
Range("A2:C2").Copy Destination:=Sheets("Feuil2").Range("a2:c2")
End Sub

Au pardon, je viens de voir que vous désirez le faire d'une fois avec une boucle, patiente

0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
12 mars 2009 à 20:01
Bonjour,
Voici pour la boucle:
For c = 1 To Application.CountA(Range("d:d"))
   If Cells(c, 4).Value = "Vrai" Then
     MsgBox ("copier les valeurs et les coller sur autre feuille")
   End If
Next c


A vous de complèter selon vos besoins.
0
jeanraoul65
12 mars 2009 à 20:15
Merci je vais tester ça de suite, je ne pensais pas que la cellule qui contenait la checkbox prenait automatiquement sa valeur afin faire le test VRAI ou FAUX
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
12 mars 2009 à 20:23
Bonjour,
Prennez cette version qui tient compte de la première cellule qui contient la case à cocher, ici la "D1"

' position de la première case à cocher
pos = Range("D1").Row
For c = 0 To Application.CountA(Range("d:d"))
  If Cells(pos + c, 4).Value = "Vrai" Then
    MsgBox ("copier les valeurs et les coller sur autre feuille")
  End If
next c


Note : pour ceci checkbox prenait automatiquement sa valeur afin faire le test VRAI ou FAUX

cela dépend du type de contrôle que vous avez utilisé ; Controle de Formulaire ou Contrôle ActivX
0
jeanraoul65
12 mars 2009 à 20:56
J'ai essayé sur mon fichier mais le test ne s'effectue pas, c'est comme si ma colonne D était vide, pas de vrai ni de faux meme lorsque je coche les box ,
y a t'il une manip à effectuer pour effectivement lier la checkbox a la cellule ? ( peut etre une option lors de la création de la check box??)
Merci
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
12 mars 2009 à 22:06
Bonjour,
Quel type de contrôle avez-vous utilisé ; Controle de Formulaire ou Contrôle ActivX ?
Faites un clic droit sur une case à cocher .... que se passe-t-il ?
J'attends !
0
jeanraoul65 Messages postés 11 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 16 mars 2009
12 mars 2009 à 22:39
J'ai inséré des activex par défaut (je ne connais pas la différence entre les 2 ) , en faisant clic droit propiétés j'ai trouvé le champs "linked cell" qui definit la celulle associée . La macro marche desormais . Le seul poblème est qu'il faut rentrer pour chaque checkbox la cellule associée "à la mano" ce qui est assez fastidieux etant donné ma liste d'articles... Je pense que je vais reconsiderer la solution proposée par Eriic un peu plus haut pour voir si cela convient.
Merci
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
12 mars 2009 à 22:49
Bonjour,
Eh oui vous devez renseigner la propriété de chaque case à cocher, il en est de même pour type "Contrôle de Formulaire".
En appliquant la solution d'eriiic (salutations au passage) vous faites le bon choix.

Concernant l'instruction pour la boucle, il vous suffira de remplacer "Vrai" par "X" et c'est bon.
Note: dans votre code vous placez un "X" majuscule et la ligne de code devient :
If StrConv(Cells(pos + c, 4), vbUpperCase) = "X" Then
En cas de minuscule dans les cellules se sera converti en majuscule par "StrConv()
0