Comment modifier automatiquement une macro en la recopiant

geosovin

XLDnaute Nouveau
Bonjour à tous,

Je suis nouveau ici et ma question va surement vous paraître très simple vu le niveau des réponses de la majorité des discussions, mais tant pis ! :D

Dans le fichier suivant, j'ai deux macros toutes bêtes sur deux boutons et :
- Je souhaiterai les recopier sur les 200 lignes qui suivent pour quelles s'exécutent sur chaque ligne,
- Eviter d'avoir à créer les 400 macros correspondantes !!

Voilà, merci d'avance.
 

Pièces jointes

  • Liste de consultations.xls
    39.5 KB · Affichages: 44

Toine

XLDnaute Occasionnel
Re : Comment modifier automatiquement une macro en la recopiant

bonjour et bienvenue parmi nous
pour ce qui est de tes macro *200 je ne peut pas t'aider dans l'etat étant donner que je ne peut pas télécherger ton fichier (desoler)
mais je peut par contre te donner mon avis sur la question
mettre un bouton par ligne devien vite impraticable pourquoi ne pas faire en sorte que tes macro s'execute sur le ligne choisi par exemple s est beaucoup plus simple et a mon avis moin sujet au fause manipulation
ps : donne moi tes deux macro en collant le code (histoire de voire ce que je peut faire avec ;) )
encore bienvenue chez nous (félicitation tu fait party du nous maintenant je men felicite aussi je nous félicite :) )
 

geosovin

XLDnaute Nouveau
Re : Comment modifier automatiquement une macro en la recopiant

Bonjour Toine et merci,

En fait, mon problème est double. N'ayant jamais fait de VBA (et ne comprenant pas vraiment comment sa marche pour l'instant) je me voyais mal intégrer une macro dans une fonction "Si" (c'est possible?).

1ere solution : Faire une fonction "Si" avec macro intégrer pour dire que, si je me une croix (par exemple) dans une case, automatiquement la macro se lance pour me rayer toute la ligne.

2ème solution (correspondante à mon petit fichier) : Faire deux boutons reliés chaqu'un à sa macro. Bouton 1 sa raye la ligne. Bouton 2 sa dé-raye la ligne.
Mais le problème est ensuite de recopier ces macros sur les 200 lignes qui suivent. Surtout qu'il faudra surement que j'insère ou que je supprime des lignes régulièrement.

Suis-je suffisamment clair ? Sinon je veux bien t'envoyer tous ce que tu veux (mais encore faudrait-il que je comprenne se que tu souhaites :confused: ).
 

Toine

XLDnaute Occasionnel
Re : Comment modifier automatiquement une macro en la recopiant

donc a moi te regarder dans ma boule de crystal et de dire que si tu a deja les macro qui marche pour une ligne la faire marcher pour toute (ou juste celle que tu veux ) ce n'est pas compliquer le plus dur est de faire un choix sur le commant choisir la ligne a barrer ou débarer (un barbarisme de plus ^^)
ton idée de faire un bouton par ligne me parait étre relativement lourd
étant dnner qu'il va san doute faloire faire impeut de code vba autan faire cela de la façon la plus ergonomique possible
par exemple un bouton barrer ou "débarrer" ligne selectioner
donc plue 200 bouton mais 1 seul ou 2 a la limite
ce qui reprend ton petit fichier mais en plus simple de base mais en modifiant juste les macro de tes bouton c'est pour cela qu'il faudrait que tu fase un copier colle du code de tes macro pour maider
exemple :
private sub blbla
blablabla
end sub
mai ne menvoi rien colle les dans ton prochain message
 

geosovin

XLDnaute Nouveau
Re : Comment modifier automatiquement une macro en la recopiant

Alors là !! Chapeau bas Catrice.

C'est exactement se que je recherchais. Encore bravo et merci.

Serait-il possible que l'humble vermisseau que je suis face au sublime mâitre(s) que je côtois sur ce forum (c'est un peu pompeux mais sa sonne super bien ;) ), puisse avoir les explication sur les termes empoyés dans cette macro. Et serait-il encore trop osé d'espérer la solution avec fonction et macro incorporée ?

Votre humble serviteur :p
 

Catrice

XLDnaute Barbatruc
Re : Comment modifier automatiquement une macro en la recopiant

Re,

Merci pour les fleurs mais maitre c'est exagéré ;)

Pour les explications, pas de probleme :

Dans la Feuille Consultation, on créé la macro evenementielle :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column > 11 And Target.Column < 14 Then Test
End Sub

Qui s'execute à chaque changement de selection.
On teste alors si on est dans les colonnes L & M (colonne >11 ou <14)
Si c'est le cas on lance la procedure Test

Dans le module1 on a :
Sub Test()
With ActiveCell 'On travaille sur la cellule active
.Font.Bold = True 'On met en Gras
If .Column = 12 Then 'Si on est en colonne L
.Value = "X" 'on met X dans la cellule
.Offset(0, 1).ClearContents 'on efface la cellule de droite (Offset(0,1) => o ligne, 1 colonne)
Cells(.Row, 1).Resize(1, 10).Font.Strikethrough = False 'On prend la cellule dont la ligne est celle de la cellule active et la colonne est 1 (Cells(.Row, 1)) puis on redimensionne 1 ligne 10 colonnes (Resize(1, 10)) puis on barre le texte
.Offset(0, 3).Select 'On se place dans la cellule de la colonne O
End If
If .Column = 13 Then 'Si on est en colonne M
.Value = "X"
.Offset(0, -1).ClearContents
Cells(.Row, 1).Resize(1, 10).Font.Strikethrough = True
.Offset(0, 2).Select
End If
End With
End Sub


Et serait-il encore trop osé d'espérer la solution avec fonction et macro incorporée ?
Je n'ai pas compris ce que tu voulais dire ...

Une version allégée (en relisant):
Sub Test()
With ActiveCell
.Font.Bold = True
.Value = "X"
If .Column = 12 Then
.Offset(0, 1).ClearContents
Cells(.Row, 1).Resize(1, 10).Font.Strikethrough = False
.Offset(0, 3).Select
Else
.Offset(0, -1).ClearContents
Cells(.Row, 1).Resize(1, 10).Font.Strikethrough = True
.Offset(0, 2).Select
End If
End With
End Sub

Voir fichier joint
 

Pièces jointes

  • Liste de consultations3.xls
    27 KB · Affichages: 43
Dernière édition:
Haut Bas