Bonjour,
J'ai conscience que le titre est sans doute mal trouvé, mais j'ai du mal à voir comment rédiger autrement.
Mon problème est le suivant :*j'ai un ensemble de fichiers (qu'on dira de type A, dans lesquels j'ai à chaque fois 3 cellules toujours nommées :*PtFaibles, PtForts, Date) et j'ai un fichier « tableau de bord » qui compile ces 3 valeurs pour chaque fichier A.
Quand j'ouvre un fichier de type A, le modifie, j'ai une macro pour faire la mise à jour dans mon tableau de bord si un contenu a changé. En l'état, je ne vois pas d'autre possibilité que de passer par une succession de if du type :
Je me demandais dans quelle mesure il était possible de passer par une boucle pour simplifier, notamment si je suis amené à copier de nouvelles cellules pas encore créées ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 'Si la valeur de ma cellule Date a changé, la modifier et valider le marqueur CtrlDate, sinon, ne rien faire If Range("Date").Rows(ColNumAction) = Date Then 'Rows(ColNumAction) correspond à la ligne propre à mon fichier de type A initial CtrlDate = False Else Range("Date").Rows(ColNumAction) = Date CtrlDate = True End If 'Si la valeur de ma cellule PtFaibles a changé, la modifier et valider le marqueur CtrlPtFaibles, sinon, ne rien faire If Range("PtFaibles").Rows(ColNumAction) = PtFaibles Then CtrlDate = False Else Range("PtFaibles").Rows(ColNumAction) = PtFaibles CtrlDate = True End If 'Si la valeur de ma cellule PtForts a changé, etc.. if ... Else... End if
J'avais pensé copier mes ranges dans un Array et utiliser un for, ce qui me permet effectivement de passer d'un range à l'autre, mais du coup, je suis à nouveau bloqué pour mes valeurs de cellules qui ont aussi un nom différent. Il me faudrait à nouveau passer par un Array.
Voyez-vous plus simple ?
J'espère que je ne suis pas trop incompréhensible, d'autant que je n'ai qu'un petit niveau de vrai débutant sur vba et la programmation en général.
Merci par avance !
Partager