Executer une Macro Change sur toutes les cellules d'une feuille

Résolu
lycaon_58 Messages postés 31 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 1 février 2007 - 19 oct. 2006 à 17:14
lycaon_58 Messages postés 31 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 1 février 2007 - 23 oct. 2006 à 13:22
Salut à tous,

J'ai écrit une macro qui concatène plusieurs fichiers excel en un seul.
J'ai également une macro qui s'éxécute sur le fichier final à chaque fois qu'on modifie la valeur d'une case (Private Sub Worksheet_Change(ByVal Target As Range)).

Comment faire pour qu'elle s'éxécute sur toutes les cellules de mon fichier final à la fin de ma macro de concaténation (pas pendant parce que ça bogue) ?
J'ai essayé de la feinter en sélectionnant toutes les cellules et déselectionner juste derrière mais ça ne marche pas....

Merci pour votre aide,

Lycaon

3 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
19 oct. 2006 à 19:42
Salut,

regarde cet exemple :

Sub test()
    Dim rMyCell As Range
    
Sheets("Nom Feuille").Select
For Each rMyCell In ActiveSheet.Cells
    rMyCell.Value =  "Salut"
    ' ici j'ai mis salut pour le test mais tu mets
    ' ce que ça doit faire à chaque cellule
Next rMyCell

' attention, opération très longue, pour l'intérrompre : Ctrl + Pause
End Sub

<small>Coloration syntaxique automatique [mortalino] </small>
       
@++

<hr width ="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
19 oct. 2006 à 23:55
Tu peux mettre une variable booléenne dans un module déclarée Public

disons, Public EnCoursDUtilisation As boolean


Quand tu commences ta macro qui copie les fichiers, tu la mets à True

À la fin de cette macro, tu la mets à False


Et dans ta procédure WorkSheet_Change, tu vérifies au début si la variable est True ou False. Si elle True, tu Exit Sub

MPi
0
lycaon_58 Messages postés 31 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 1 février 2007
23 oct. 2006 à 13:22
Merci à tous les deux.

Je n'ai pas essayé la solution de MPi mais celle de Mortalino fonctionne.
J'y ai apporté une petite modification. Au lieu d'utiliser ActiveSheet.Cells, il vaut mieux déterminer "à la main" les dimensions de son tableau et éxécuter la macro sur cette sélection. Sinon, en sélectionnant la feuille entière, c'est effectivement extrêmement long !!!

@ bientôt

Lycaon
0
Rejoignez-nous