Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

recup de données par semaines

24 réponses
Avatar
magic-dd
Bonjour

j'ai un tableau recapitulatif du nombre de fruits vendus, perdus et donn=E9=
s par semaine

par une liste d=E9roulante j'obtiens les donnees

chaque semaine je recupere ces donnees

j'aimerai recuperer les donn=E9es de chaque fruits dans un tableau recap da=
ns un nouvel onglet

je m'y perds en voulant changer la donn=E9e dans ma liste deroulante et cop=
ier dans mon recap


merci de votre aide

http://cjoint.com/?CJgwcAngBBd

10 réponses

1 2 3
Avatar
magic-dd
Encore une fois MichD tu me sors une macro de haut vol

mais un probleme réside dans cette procedure

dans une partie de code

With Worksheets("Feuil1")
Set Rg = .Range("H2:H" & .Range("H65536").End(xlUp).Row)

tu fais référence au tableau dans lequel je recupere mes données

j'aimerai que celui ci ne sois pas utilisé mais bien les valeurs inscrite s en D1:D4

ce sont celles ci qui varient en fonction de la valeur de la liste déroul ante.

c'est certainement plus compliqué j'en conviens très bien



Le lundi 7 octobre 2013 20:37:47 UTC+2, MichD a écrit :
Voici ton fichier avec la macro : http://cjoint.com/?CJhuJtAGS5B



Dans la feuille "recap semaine", sur la ligne 1, tu n'as qu'à cliquer

sur le bouton "Exécuter" . Dans la procédure, tu dois adapter le

No semaine de la première semaine à partir duquel le no semaine

doit s'incrémenter.







MichD

--------------------------------------------------------------
Avatar
MichD
Dans ton fichier originale,

ta liste déroulante en A1 était composée des items de la colonne H2:Hx
Comment faire pour deviner???

'---------------------------------------
Sub test()
Dim Rg As Range, C As Range, X As String, Col As Long
Dim LastRow As Long, NoSemaine As String

With Worksheets("recap semaine")
If .Range("A65536").End(xlUp).Row < 3 Then
NoSemaine = "SEMAINE 1" 'QUEL EST LE NUMÉRO DE LA PREMIÈRE SEMAINE
Else
NoSemaine = .Range("A" & .Range("A65536").End(xlUp).Row)
NoSemaine = "SEMAINE " & Split(NoSemaine, " ")(1) + 1
End If
End With

With Worksheets("Feuil1")
With .Range("A1")
With .Validation
X = Right(.Formula1, Len(.Formula1) - 1)
End With
End With
Set Rg = .Range(X)
End With

With Worksheets("recap semaine")
LastRow = .Cells.Find("*", LookIn:=xlValues, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
End With

Application.ScreenUpdating = False
Application.EnableEvents = False
On Error Resume Next
For Each C In Rg
Err.Clear
With Worksheets("recap semaine")
With .Rows(1)
Col = Application.Match(C.Value, .Value, 0)
.Cells(LastRow, Col).Resize(, 4).Value = C.Offset(, 1).Resize(, 4).Value
End With
End With
Next

With Worksheets("recap semaine").Range("A" & LastRow)
.Value = NoSemaine
End With
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub
'---------------------------------------


MichD
--------------------------------------------------------------
Avatar
MichD
J'ai supposé que dans la liste de validation, tu
avais une référence à une plage de cellules, si tu
emploies un NOM (Plage nommée), il faudra adapter la macro!



MichD
--------------------------------------------------------------
Avatar
magic-dd
clap clap

excellentissime

merci mille fois
Avatar
magic-dd
Bonjour michD
Première action en arrivant au boulot était de tester ta macro.

Elle fonctionne parfaitement mais comme je te le disais hier et cela se con firme ce sont les valeurs situées dans le tableau H1:L4 Qui sont prisent en compte et non celles du tableau D1:D4 qui sont celles que je veux prendr e.

Certes ce sont les mêmes mais mon tableau exemple en h1:l4 sont beaucoup plus nombreuses. Et ce tableau me sert de matrice pour mes valeurs résult ats en D1:D4

Merci
Avatar
MichD
| ce tableau me sert de matrice pour mes valeurs résultats en D1:D4

Si tu regardes dans la macro, j'extrais la plage de cellules que tu as
assignée à la liste de validation en A1. En conséquence, la boucle
est faite à partir du contenu de cette liste et non pas à partir
du contenu de la colonne H1: Hx.
Dans ton fichier exemple, tu reprends la plage H1:Hx comme plage
de cellules comme étant la plage pour ta liste de validation... mais
tu pourrais indiquer n'importe quelle autre plage pour ta liste de
validation.

J'ai présumé que tu utilisais une plage de cellules pour définir ta liste
de validation. Si tu emploies un "NOM" (insertion / nom / définir) comme
liste, il faudra adapter la procédure quelque peu.

La section du code qui extrait la plage de cellules pour ta liste de
validation.
'------------------------------------------
With Worksheets("Feuil1")
With .Range("A1")
With .Validation
X = Right(.Formula1, Len(.Formula1) - 1)
End With
End With
Set Rg = .Range(X)
End With
'------------------------------------------



MichD
---------------------------------------------------------------
"magic-dd" a écrit dans le message de groupe de discussion :


Bonjour michD
Première action en arrivant au boulot était de tester ta macro.

Elle fonctionne parfaitement mais comme je te le disais hier et cela se
confirme ce sont les valeurs situées dans le tableau H1:L4 Qui sont prisent
en compte et non celles du tableau D1:D4 qui sont celles que je veux
prendre.

Certes ce sont les mêmes mais mon tableau exemple en h1:l4 sont beaucoup
plus nombreuses. Et ce tableau me sert de matrice pour mes valeurs résultats
en D1:D4

Merci
Avatar
magic-dd
J'ai regarde ce que tu me disais.
J'ai effacé toutes les données numérique du tableau h
J'ai mis en brut des données dans la colonne D

Forcément cela boucle correctement avec les différents noms de la liste déroulante mais aucune valeur n'est recopiée dans le récapitulatif s i ce n'est le numéro de semaine

Étrange.
Avatar
MichD
Je ne vais pas faire 50 versions de la même procédure.

Commence par décider comment tu veux bâtir tes tableaux
et lorsque ta décision sera arrêtée, tu publieras le fichier
montrant la structure de tes données.

MichD
---------------------------------------------------------------
Avatar
magic-dd
En voulant faire un exemple simple je me suis emmêlé les pinceaux

toutes mes excuses

donc voici le nouveau fichier tel que je l'ai réellement

merci de voir si ma demande est toujours réalisable

Grand merci

http://cjoint.com/?CJitjQL4GY0
Avatar
MichD
Pourquoi n'utilise pas un tableau croisé dynamique, tu
as la compilation des données de ta feuille "Données reçues"
à l'aide de quelques clics de souris. Cela peut aussi se faire
par macro...

http://cjoint.com/?CJitDPmdFF4

MichD
---------------------------------------------------------------
1 2 3