Bonjour le forum, j'ai de nouveau besoin de vous, j'ai fait un petit programme de comptabilité avec ventilation automatique dans chaque compte respectif, j'utilise 1 compte par page, depuis le journal des écritures j'aimerai appeler le compte à consulter par une liste déroulante ou figurent tous les comptes, si je sélectionne le compte no 2, le compte no 2 s'affiche, si je sélectionne le compte no 5, le compte no 5 s'affiche...etc..... j'ai bien une macro qui m'ouvre chaque compte déjà faite, mais comment faire pour que la macro se mette en route selon le résultat de la listé déroulante. Je joins un petit fichier simplifié.... merci pour votre aide (sur le fichier d'exemple il n'y a aucune macro enregistrée)
Attention! Ne confondez pas Selection et ActiveCell.
Avec ActiveCell:
Si vous sélectionnnez A3:A5 en partant de A3, les cellules effacées sont celles de la ligne 3
Si vous sélectionnnez A3:A5 en partant de A5, les cellules effacées sont celles de la ligne 5
Avec Selection à la place de ActiveCell:
Quelque soit la méthode de sélection, les cellules effacées seront celles de la ligne 3
C'est une astuce pour pouvoir faire la substitution: On remplace le "_" par le numéro de la ligne. Ainsi si Le numéro de ActiveCell.row est 3:
Replace("a_,b_,c_,e_,g_,h_", "_", ActiveCell.Row) donne: "a3,b3,c3,e3,g3,h3"
et
ActiveSheet.Range("a3,b3,c3,e3,g3,h3").ClearContents est une instruction valable au niveau VBA (et qui réalise ce qu'on cherche à faire)
Le choix de "_" est arbitraire. On pourrait aussi utiliser un autre caractère qui n'apparait jamais dans les adresse de Range comme £ ou ê ou bien d'autres...
Bonsoir, je vais encore faire appel à vos connaissances... j'ai récupéré ce code en cherchant sur le forum, ce code copie les données d'une ligne (uniquement les cellules de la ligne sélectionnée se trouvant dans les colonnes (B à E) + (G et I)) et les colle en dessous de la dernière ligne. Cela fonctionne parfaitement bien, mais j'aimerai y apporter un complément, ce code se déclenche par un simple double clic, c'est trop facile de se tromper et le déclencher par erreur, y-a-t'il la possibilité d'ajouter au double clic l'appui sur la touche Option ou Commande pour que la macro s'exécute ? (je suis sur mac).
Aussi un autre complément utile serait que la colonne D contient des valeurs numériques : 1-2-3-4-5...etc... lorsque je viens coller la ligne supplémentaire, j'aimerai quelle valeur de la nouvelle ligne prenne la valeur de la ligne précédente +1(en format valeur)... (uniquement la colonne D)
Voilà sinon le reste tout est parfait.
Merci pour votre aide.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Dim LigneCopie As Integer
Dim LigneColle As Integer
LigneCopie = ActiveCell.Row
LigneColle = Range("B65536").End(xlUp).Row + 1
Range("B" & LigneCopie & ":E" & LigneCopie).Copy
ActiveSheet.Paste Range("B" & LigneColle)
Range("G" & LigneCopie).Copy
ActiveSheet.Paste Range("G" & LigneColle)
Range("I" & LigneCopie).Copy
ActiveSheet.Paste Range("I" & LigneColle)
Application.CutCopyMode = False
ce code se déclenche par un simple double clic, c'est trop facile de se tromper et le déclencher par erreur, y-a-t'il la possibilité d'ajouter au double clic l'appui sur la touche Option ou Commande pour que la macro s'exécute ? (je suis sur mac).
le messageBOX est une bonne solution, seulement il serait alors bon de ne pas considérer toute la ligne comme endroit pour cliquer, mais uniquement la colonne A par exemple, au risque d'avoir à tout moment le messageBox qui s'ouvre ....
oui mais comme c'est une zone de saisie de données, si on veut apporter une correction on doit faire un double clic, donc la MgBox va s'ouvrir, je voudrais réserver sur la ligne une zone ou, en cliquant dans cette même ligne, mais dans la colonne A par exemple, le message box s'ouvrira, bien entendu je choisirai une colonne ou il n'y a pas de données à l'intérieur, tout à droite par exemple.