Copier-coller une macro de RAZ "intelligente" ?

  • Initiateur de la discussion Initiateur de la discussion the Mokkori
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

the Mokkori

Guest
Bonjour le forum !

Je sollicite a nouveau vos esprits pour un coup de main sur une creation de macro (sachant que je n'y connais rien)

J'ai n tableaux de dimensions identiques alignes les uns sous les autres (3 dans l'exemple ci-joint). Je souhaiterais creer un bouton "Reset" par tableau, qui reinitialise les cellules en gris sombre du tableau. Jusque la, rien de bien sorcier.

Mais vu que je vais avoir un grand nombre de tableaux (~200), je souhaiterais avoir un code generique, qui reinitialise le cellules du tableau en face duquel il est. Cela suppose que le bouton soit capble d'identifier sa propre position. Fantasme ou realite ? Quid des "references relatives"
Et question correlee : est-il possible de "copier-coller" un bouton ?

Merci pour votre aide, je reste dans le coin si vous voulez des precisions !


the Mokkori

PS : Desole pour les accents, clavier allemand...
 

Pièces jointes

Re : Copier-coller une macro de RAZ "intelligente" ?

Bonjour the Mokkori, bonjour le forum,

Un seul bouton avec le code ci-dessous mais avant de le lancer il te faudra sélectionner le numéro du tableau...
Le code :
Code:
Sub Macro1()
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)

'si la cellule active est fusionnée et contient un nombre différent de trois cellules, message, sort de la procédure
If ActiveCell.MergeArea.Cells.Count <> 3 Then MsgBox "Sélectionnez le numéro en haut à gauche du Tableau !": Exit Sub
Set pl = ActiveCell.Resize(34, 10) 'définit la plage pl du tableau
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    If cel.Interior.ColorIndex = 48 Then 'condition  : si la cellule est colorée de gris 40%
        cel.ClearContents 'efface le contenu de la cellule
        cel.Interior.ColorIndex = xlNone 'supprime la couleur
    End If 'fin de la condition
Next cel 'prochaine cellule de la boucle
End Sub
 
Re : Copier-coller une macro de RAZ "intelligente" ?

Merci Robert, j'essaie ca demain matin et je vous tiens au courant.

En revanche, je me suis mal exprime quand je parlais de "gris sombre", c'etait juste un repere pour vous. Le code peut fonctionner avec des coordonnes plutot que par couleur, ca me va aussi bien. Mais apres tout pourquoi pas ? 😉

Amicalement
 
Re : Copier-coller une macro de RAZ "intelligente" ?

Bonjour the Mokkori, bonjour le forum,

Peut-être comme ça alors :
Code:
Sub Macro1()
Dim pt As Range 'déclare la variable pt (Plage Tableau)
Dim pc As Range 'déclarfe la variable pc (Plage des Cellules)

'si la cellule active est fusionnée et contient un nombre différent de trois cellules, message, sort de la procédure
If ActiveCell.MergeArea.Cells.Count <> 3 Then MsgBox "Sélectionnez le numéro en haut à gauche du Tableau !": Exit Sub
Set pt = ActiveCell.Resize(34, 10) 'définit la plage pt du tableau
'définit la plage des cellules pc
Set pc = Application.Union(pt.Cells(5, 2), pt.Cells(6, 2), pt.Cells(15, 2), pt.Cells(16, 2), pt.Cells(22, 2), _
   pt.Cells(23, 2), pt.Cells(28, 2), Range(pt.Cells(7, 5), pt.Cells(8, 10)), Range(pt.Cells(21, 3), pt.Cells(21, 10)))
pc.ClearContents 'efface le contenu de la plage pc
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

D
Réponses
2
Affichages
1 K
E
Réponses
4
Affichages
8 K
excel girl
E
G
Réponses
2
Affichages
631
guffyz
G
D
Réponses
24
Affichages
3 K
damaelyon
D
Retour