OVH Cloud OVH Cloud

transfert de données

2 réponses
Avatar
Seb V
Bonjour à tous.

je désire transfere des données d'une feuille a une autre d'un meme classeur.
la feuille 1 la cible,les feuilles 2 à 53 la source
la feuille 1 se compose d'une col "noms" et de 52 col "semaine1, ......."
la feuille 2 est un tableau de calcul et je veux en extraire le résultat
dans un tableau de synthese.
Le soucis étant que l'ordre des noms diffère d'un tableau a l'autre ce qui
m'empeche de faire un copy VBA
J'arrive a extraire les données sources, mais pas a les placées dans mon
tableau de synthèse suivant la ligne "nom", et la colonne "semaine 1".

Merci pour toute aide

2 réponses

Avatar
Youky
Salut,
voici une macro faite pour toi
il faut nommer la feuil1 ...Cumul et celle-ci doit impérativement placée la
1ere dans les onglets
......... ce que fait la macro:
recopie tous les noms sans doublon en Cumul à partir de A2
cherche le nom et additionne les données en vue de faire une récap sur le
Cumul.
Aussi il suffit des 52 onglets de semaines et la page Cumul
Donc 1er onglet "Cumul" et ensuite les 52 semaines
J'essaie d'être clair

Youky

Sub Cumulatif()
Dim nom(10000)
'Application.ScreenUpdating = False
Sheets("Cumul").Select
'bas du tableau ici BB1000 à modifier si besoin, ici on efface
Sheets("Cumul").Range("A2:BB1000").ClearContents
For sem = 2 To Sheets.Count
For k = 2 To Sheets(sem).[A65000].End(xlUp).Row
n = n + 1
nom(n) = Sheets(sem).Cells(k, 1)
Next k
Next sem
For k = 2 To n + 1
Sheets("Cumul").Cells(k, 2) = nom(k - 1)
Next
Sheets("Cumul").Range("B2:B" & n + 1).AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Sheets("Cumul").Range("A2"), Unique:=True
Sheets("Cumul").Range("B2:B" & n + 1).ClearContents
For za = 2 To n + 1
lenom = Sheets("Cumul").Cells(za, 1)
For sem = 2 To Sheets.Count
For k = 2 To Sheets(sem).[A65000].End(xlUp).Row
If Sheets(sem).Cells(k, 1) = lenom Then
For col = 2 To 53
Sheets("Cumul").Cells(za, col) = Sheets(sem).Cells(k, col) +
Sheets("Cumul").Cells(za, col)
Next
Exit For
End If
Next
Next
Next
'Application.ScreenUpdating = true
End Sub

"Seb V" a écrit dans le message de news:

Bonjour à tous.

je désire transfere des données d'une feuille a une autre d'un meme
classeur.
la feuille 1 la cible,les feuilles 2 à 53 la source
la feuille 1 se compose d'une col "noms" et de 52 col "semaine1, ......."
la feuille 2 est un tableau de calcul et je veux en extraire le résultat
dans un tableau de synthese.
Le soucis étant que l'ordre des noms diffère d'un tableau a l'autre ce qui
m'empeche de faire un copy VBA
J'arrive a extraire les données sources, mais pas a les placées dans mon
tableau de synthèse suivant la ligne "nom", et la colonne "semaine 1".

Merci pour toute aide


Avatar
Seb V
Salut Youky

Merci de t'être penché sur mon problème.
Vu l'heure tardive (et ma fatigue), je ne peux essayer ta macro maintenant
mais le ferais dés que possible.
Je te tiendrais au courant quoi qu'il en soit sur ce post.

Merci encore @+


Salut,
voici une macro faite pour toi
il faut nommer la feuil1 ...Cumul et celle-ci doit impérativement placée la
1ere dans les onglets
.......... ce que fait la macro:
recopie tous les noms sans doublon en Cumul à partir de A2
cherche le nom et additionne les données en vue de faire une récap sur le
Cumul.
Aussi il suffit des 52 onglets de semaines et la page Cumul
Donc 1er onglet "Cumul" et ensuite les 52 semaines
J'essaie d'être clair

Youky

Sub Cumulatif()
Dim nom(10000)
'Application.ScreenUpdating = False
Sheets("Cumul").Select
'bas du tableau ici BB1000 à modifier si besoin, ici on efface
Sheets("Cumul").Range("A2:BB1000").ClearContents
For sem = 2 To Sheets.Count
For k = 2 To Sheets(sem).[A65000].End(xlUp).Row
n = n + 1
nom(n) = Sheets(sem).Cells(k, 1)
Next k
Next sem
For k = 2 To n + 1
Sheets("Cumul").Cells(k, 2) = nom(k - 1)
Next
Sheets("Cumul").Range("B2:B" & n + 1).AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Sheets("Cumul").Range("A2"), Unique:=True
Sheets("Cumul").Range("B2:B" & n + 1).ClearContents
For za = 2 To n + 1
lenom = Sheets("Cumul").Cells(za, 1)
For sem = 2 To Sheets.Count
For k = 2 To Sheets(sem).[A65000].End(xlUp).Row
If Sheets(sem).Cells(k, 1) = lenom Then
For col = 2 To 53
Sheets("Cumul").Cells(za, col) = Sheets(sem).Cells(k, col) +
Sheets("Cumul").Cells(za, col)
Next
Exit For
End If
Next
Next
Next
'Application.ScreenUpdating = true
End Sub

"Seb V" a écrit dans le message de news:

Bonjour à tous.

je désire transfere des données d'une feuille a une autre d'un meme
classeur.
la feuille 1 la cible,les feuilles 2 à 53 la source
la feuille 1 se compose d'une col "noms" et de 52 col "semaine1, ......."
la feuille 2 est un tableau de calcul et je veux en extraire le résultat
dans un tableau de synthese.
Le soucis étant que l'ordre des noms diffère d'un tableau a l'autre ce qui
m'empeche de faire un copy VBA
J'arrive a extraire les données sources, mais pas a les placées dans mon
tableau de synthèse suivant la ligne "nom", et la colonne "semaine 1".

Merci pour toute aide