XL 2019 Activer une macro en sélectionnant une cellule

romeo1974

XLDnaute Nouveau
Bonjour,

Mon projet continue...
Je cherche a effectuer une macro en cliquant/sélectionnant dans une cellule, cela activera un userform ou je vais récupérer les données (se situant a la gauche) dans les textbox de cette userform
Et de ce fait, vu que le tableau évolue en ajoutant automatiquement des lignes, il faudrait que je puisse incrémenter cette fonction en meme temps que l'ajout de ces nouvelles lignes

petit screenshoot du tableau
 

Pièces jointes

  • Capture1.JPG
    Capture1.JPG
    30.5 KB · Affichages: 8

romeo1974

XLDnaute Nouveau
Bonjour @romeo1974

Avec un fichier c'est beaucoup mieux .... qu'une image ;)
Oui c'est pas faux.
Je te joints le fichier
en fait sur la feuille "compte courant", je voudrais pouvoir lancer un userform ("userform2") ou les informations a gauche de la cellule ou se trouve "modifier" se retrouve dans les textbox, de ce fait je pourrais modifier et valider les modification.
J'en profite pour te demander une fonction pour supprimer toute la ligne correspondant a cette cellule et remonter vers le haut.
Aussi vu que ces lignes seront ajouter au fur et a mesure du temps, il faudrait que c'est fonction s'incrémente.
PS: l'userform2 les txtbox et autres ne sont pas terminées de configurer
 

Pièces jointes

  • Gestion de compte V2.xlsm
    242 KB · Affichages: 6

Phil69970

XLDnaute Barbatruc
Re
@romeo1974

Gloups !!! Vu le code il faut tout revoir ou presque .....

Quelques remarques :
1) Se servir de l'enregistreur est une bonne idée au départ mais après il faut nettoyer le code pour le rendre plus propre voir l'amélioré avantageusement un exemple très spectaculaire ici et le fil associé

2) Dans le code on évite les select et activate autant que faire se peut ... car cela ralentit le code et le rend très difficile à lire .
Dans tes lignes de codes il y a des dizaines (voir des centaines de select)

3) Le design de ton fichier comme les images de fonds se mettent en dernier quand tout le reste fonctionne et pas en 1er .
C'est comme si tu faisais le crépi de ta maison en même temps que tu montes les murs o_O

Exemple

Ta macro :
VB:
Sub miseajourcomptecourant()

Worksheets("Compte courant").Select
 Range("E4").Select
    Selection.End(xlDown).Select
    Selection.Copy
    Range("H3").Select
    Selection.PasteSpecial Paste:=xlPasteValues
End Sub

4 select pour 8 lignes de codes c'est beaucoup ..... o_O

De pluus comme "E4" est fixe si tu as une nouvelle ligne il te faudra aller dans le code modifié "E4" par "E5" !!!! Pas pratique du tout ....🤔


Dans la feuille "Compte courant" en H3 cette simple formule remplace avantageusement ta macro

=RECHERCHE(9^9;E:E)

Et fonctionne toujours !!!

Et si tu veux à tout prix du VBA
VB:
Sub miseajourcomptecourant()
With Worksheets("Compte courant")
    .Range("H3") = .Range("E" & .Range("B" & Rows.Count).End(xlUp).Row).Value
End With
End Sub

Bonne lecture
 

Phil69970

XLDnaute Barbatruc
Re

@romeo1974

Et pour encore plus simplifier :

Comme tous les soldes sont en H3 de chaque feuille tu peux faire comme ceci par VBA

VB:
Sub MaJ_Solde()
With Worksheets(ActiveSheet.Name)
    .Range("H3") = .Range("E" & .Range("B" & Rows.Count).End(xlUp).Row).Value
End With
End Sub

Explication :
Worksheets(ActiveSheet.Name)
Correspond au nom de la feuille active donc des que tu lances la macro tu es sur la "bonne" feuille que tu veux connaitre le solde
Donc 1 seule macro de 5 lignes dans un module va pouvoir être lancer de 3 boutons différents (les 3 feuilles de comptes) et de donnera le solde en H3 de la feuille ou tu te trouves
 

romeo1974

XLDnaute Nouveau
Re
@romeo1974

Gloups !!! Vu le code il faut tout revoir ou presque .....

Quelques remarques :
1) Se servir de l'enregistreur est une bonne idée au départ mais après il faut nettoyer le code pour le rendre plus propre voir l'amélioré avantageusement un exemple très spectaculaire ici et le fil associé

2) Dans le code on évite les select et activate autant que faire se peut ... car cela ralentit le code et le rend très difficile à lire .
Dans tes lignes de codes il y a des dizaines (voir des centaines de select)

3) Le design de ton fichier comme les images de fonds se mettent en dernier quand tout le reste fonctionne et pas en 1er .
C'est comme si tu faisais le crépi de ta maison en même temps que tu montes les murs o_O

Exemple

Ta macro :
VB:
Sub miseajourcomptecourant()

Worksheets("Compte courant").Select
 Range("E4").Select
    Selection.End(xlDown).Select
    Selection.Copy
    Range("H3").Select
    Selection.PasteSpecial Paste:=xlPasteValues
End Sub

4 select pour 8 lignes de codes c'est beaucoup ..... o_O

De pluus comme "E4" est fixe si tu as une nouvelle ligne il te faudra aller dans le code modifié "E4" par "E5" !!!! Pas pratique du tout ....🤔


Dans la feuille "Compte courant" en H3 cette simple formule remplace avantageusement ta macro



Et fonctionne toujours !!!

Et si tu veux à tout prix du VBA
VB:
Sub miseajourcomptecourant()
With Worksheets("Compte courant")
    .Range("H3") = .Range("E" & .Range("B" & Rows.Count).End(xlUp).Row).Value
End With
End Sub

Bonne lecture
Bonjour Phil pour ces bons conseils, je vais essayer de réduire cela!!
Merci aussi pour la petite formule qui va bien :)
 

Discussions similaires

Réponses
5
Affichages
284

Statistiques des forums

Discussions
315 093
Messages
2 116 123
Membres
112 666
dernier inscrit
Coco0505