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
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
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
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 .....
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
Sub miseajourcomptecourant()
With Worksheets("Compte courant")
.Range("H3") = .Range("E" & .Range("B" & Rows.Count).End(xlUp).Row).Value
End With
End Sub
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
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
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 .....
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