XL pour MAC Exécuter une macro selon le contenu de une liste déroulante

Valter

XLDnaute Occasionnel
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)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @Valter,

Essayer :
VB:
ActiveSheet.Range(Replace("a_,b_,c_,e_,g_,h_", "_", ActiveCell.Row)).ClearContents

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
 

mapomme

XLDnaute Barbatruc
Supporter XLD
juste une question pourquoi ces dignes après le H : "-"
puisque il n'y a plus rien a effacer après la colonne H

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...
 

Valter

XLDnaute Occasionnel
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

End Sub
 

Valter

XLDnaute Occasionnel
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.
 

Discussions similaires