Re : Macro création automatique d'un tableau grâce aux données d'autres feuilles
Bonjour Marine, le forum,
tu pourrais expliquer très vite fait ce qu'elle signifie stp ?
Oh oui
elle efface les données de la synthèse précédente
(mais pourquoi ai-je le sentiment que tu vas me dire cette fois que c'est un peu trop vite fait?
En "moins court": j'ai utlisé l'événement
Activate de la feuille "Calcul bouquet de travaux", de sorte que, quand tu modifieras des données dans une des autres feuilles, ou même que tu ajouteras/supprimeras une/des feuille(s), la mise à jour se feras dès que tu activeras à nouveau cette feuille de synthèse.
Il est donc nécessaire d'effacer les anciennes données (si le nombre de feuilles était constant, de même que le nombre de feuilles où les kWh sont non-nuls, on pourrait se contenter "d'écraser"; ici, par prudence, je choisis d'effacer le contenu, avant de ré-insérer les données actualisées)
Me représente la feuille dans laquelle on a inséré le code
Cells(15, 5) est la cellule E15 (15e ligne, 5e colonne)
Resize permet de redimensionner une plage (d'un certain nombre de lignes et de colonnes)
Application.CountA est l'équivalent de la fonction de feuille de calcul NBVAL
Cette ligne me permet donc d'effacer le contenu d'une plage de cellules qui démarre en E15 de la feuille "Calcul bouquet de travaux", chaque fois que cette feuille est activée, en "étendant" la zone sur autant de lignes qu'il y a de valeurs dans toute la colonne E et sur 3 colonnes.
Aussi, je crois comprendre qu'une des conditions pour que ton code marche, c'est que mes résultats en kWh soient tous dans la case D8 de leur feuille respective. Or, dans mon fichier réel, ce n'est pas le cas... Comment adapter le code ?
Ah ça, par contre, c'est ballot
!!
Ma première réponse sera:
il serait infiniment plus simple que ce soit le cas!
Si ce n'est pas possible, on peut s'y prendre autrement,
mais
- ça va inévitablement "alourdir" le code
- il faut que tu nous dises comment on retrouve l'emplacement de cette mention dans les différentes feuilles, si cet emplacement n'est pas identique.
Dans l'autre portion de code qui te pose problème, on fait une boucle (For) sur toutes les feuilles du classeur. On vérifie donc que le nom de chacune de ces feuilles (sh.Name) est différent de celui de la feuille où se fera la synthèse (Me.Name)
ET que la cellule D8 de chaque feuille contienne une valeur supérieure à 0
on en revient donc à la question précédente!.
Si les
2 conditions sont réunies, on repère le n° de ligne de la dernière cellule non-vide qui sera trouvée en colonne E, si on part de la dernière ligne de la feuille et qu'on "remonte" dans la colonne E. Le '+1' permet de pointer sur le n° de ligne de la première cellule vide sous les données en colonne E (il devra donc toujours y avoir un titre en E14!)
Est-ce plus clair?