Alimentation automatique des colonnes depuis un fichier source
Bonjour,
cela fait plusieurs jours que j'essaie de trouver une marco pour mon cas ci-dessous. Je vous serai vraiment reconnaissante pour votre aide!
Cas:Un onglet "conso" avec 90 colonnes. Les valeurs des colonnes de cet onglet "conso" doivent alimenter automatiquement les mêmes colonnes de d'autres onglets "O", "1", "2" ,""3 tout en sachant que les libellés ne sont pas les mêmes.
J'ai donc créé une matrice mapping des numéros de colonnes selon les onglets ci-dessous avec:
en ligne: les numéros des colonnes de l'onglet "Conso"
en colonne: Numéro des onglets à alimenter
La formule à avoir:
Pour la premiere ligne: Vérifier première cellule à compter de la colonne 2, si vide, saute à la cellule de droite suivante,
SI NON VIDE : ce qui est le cas dans notre tableau car cellule = 33
1.récupère la valeur de la cellule (ce qui correspond au numéro de la colonne ou index colonne dans l'onglet mentionné en entête colonne) (Colonne 33 dans onglet1)
2. Tu vas dans onglet "conso" et tu copie les données de la colonne 1 à partir de la A2 car on prend pas l'entête
3. Tu vas dans onglet1, tu cherches la colonne 33 et tu colles à partir de la cellue en ligne 2 (dans notre exemple Cells(2,33))
4. Loop sur les colonnes: Continue même contrôle à droite jusqu'à colonne 5 du tableau c-dessous
5. Loop sur les lignes jusqu'à la fin : par ligne contrôle toutes les colonnes
| #colonne Conso | Onglet 0 | Onglet1 | Onglet2 | Onglet3 |
| 1 | 33 | 4 | ||
| 2 | 5 | 1 |
Sacré challenge cette macro et je m'en sors pas, pouvez-vous m'aider SVP? Milles mercis à vous
Bonjour et bienvenue sur le forum
Tu devrais joindre ton fichier...
Bye !
et voici :)
Bonjour
Un essai à tester, si j'ai bien compris.
Te convient-il ?
Option Explicit
Dim tabloM, tabloC, tabloF(), f As Worksheet, fc As Worksheet
Dim iC&, iM&, j&, k&, colC&, colF
Sub Report()
tabloM = Sheets("Mapping").Range("A1").CurrentRegion
Set fc = Sheets("Conso") '.Range("A1").CurrentRegion
tabloC = fc.Range("A1").CurrentRegion
For j = 3 To UBound(tabloM, 2)
Set f = Sheets(CStr(tabloM(1, j)))
ReDim tablof(1 To UBound(tabloM, 1), 1 To f.Cells(1, Columns.Count).End(xlToLeft).Column)
k = 0
For iC = 2 To UBound(tabloC, 1)
For iM = 2 To UBound(tabloM, 1)
If tabloM(iM, j) <> "" Then
colF = tabloM(iM, j)
colC = tabloM(iM, 1)
tablof(k + 1, colF) = tabloC(iC, colC)
End If
Next iM
k = k + 1
Next iC
f.Range("A3").CurrentRegion.Offset(2, 0).ClearContents
f.Range("A3").Resize(k, UBound(tablof, 2)) = tablof
Erase tablof
Next j
End SubBye !