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

transfert données suivant 1 critère avec VBA

12 réponses
Avatar
tatanka
Bonjour,

J'ai un petit problème sur un de mes fichiers dont voici un exemple :
http://cjoint.com/?dDmDh1Uzxi

Dans ce fichier, je rentre des données manuellement et via un bouton cré
sous excel je fais un cumul de ces données.

Ce que j'aimerai, c'est qu'en utilisant ce même bouton, que mes données
aillent se sauvegarder dans un autre tableau.

Le critère de sauvegarde serait la semaine (S11,S12,etc dans le fichier joint)

Quelqu'un connaît il une macro que je pourrais utiliser pour mon fichier?

merci

cdt
Tatanka

10 réponses

1 2
Avatar
Jacky
Bonjour,

Tel que présenté je dirais...
en I5
=SI(ET($C5<>0;$C$4=I$4);$C5;"")

Recopier vers le bas et gauche et droite
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj201003/cijdCIuygO.xls

--
Salutations
JJ


"tatanka" a écrit dans le message de news:

Bonjour,

J'ai un petit problème sur un de mes fichiers dont voici un exemple :
http://cjoint.com/?dDmDh1Uzxi

Dans ce fichier, je rentre des données manuellement et via un bouton cré
sous excel je fais un cumul de ces données.

Ce que j'aimerai, c'est qu'en utilisant ce même bouton, que mes données
aillent se sauvegarder dans un autre tableau.

Le critère de sauvegarde serait la semaine (S11,S12,etc dans le fichier joint)

Quelqu'un connaît il une macro que je pourrais utiliser pour mon fichier?

merci

cdt
Tatanka
Avatar
FFO
Salut à toi

Ce code devrait faire :

Colonne = Range("G4", Cells(4,
Range("IV4").End(xlToLeft).Column).Address).Find(What:=Range("C4"),
After:=Range("G4"), LookIn:=xlValues, LookAt:=xlWhole).Column
i = 5
Do While Range("C" & i) <> ""
If Range("C" & i) <> 0 Then
Cells(65535, Colonne).End(xlUp).Offset(1, 0) = Range("C" & i)
End If
i = i + 1
Loop


sur ce lien ton fichier :

http://www.cijoint.fr/cjlink.php?file=cj201003/cijR7Pvot1.xls

Aprés l'avoir récupéré et ouvert cliques sur le bouton "Traitement"

Donnes moi des nouvelles !!!!!
Avatar
michdenis
Bonjour,

'-------------------------------------
Sub test1()
Dim C As Range, a As Long
Application.EnableEvents = False
Application.ScreenUpdating = False
With Worksheets("Feuil1")
For Each C In .Range("C5:C" & .Range("C65536").End(xlUp).Row)
a = a + 1
If C.Value <> 0 Then
.Range("i5")(a, 1) = C.Value
End If
Next
End With
Application.EnableEvents = True
Application.ScreenUpdating = True

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

"tatanka" a écrit dans le message de groupe de
discussion :
Bonjour,

J'ai un petit problème sur un de mes fichiers dont voici un exemple :
http://cjoint.com/?dDmDh1Uzxi

Dans ce fichier, je rentre des données manuellement et via un bouton cré
sous excel je fais un cumul de ces données.

Ce que j'aimerai, c'est qu'en utilisant ce même bouton, que mes données
aillent se sauvegarder dans un autre tableau.

Le critère de sauvegarde serait la semaine (S11,S12,etc dans le fichier joint)

Quelqu'un connaît il une macro que je pourrais utiliser pour mon fichier?

merci

cdt
Tatanka
Avatar
tatanka
Merci à vous trois pour vos réponses rapide

FFO, ca marche nikel sauf que (et oui sinon ce n'est pas drôle) ca ne me
reporte pas les données quand j'ai une cellule vide ou égal à 0

"FFO" a écrit :

Salut à toi

Ce code devrait faire :

Colonne = Range("G4", Cells(4,
Range("IV4").End(xlToLeft).Column).Address).Find(What:=Range("C4"),
After:=Range("G4"), LookIn:=xlValues, LookAt:=xlWhole).Column
i = 5
Do While Range("C" & i) <> ""
If Range("C" & i) <> 0 Then
Cells(65535, Colonne).End(xlUp).Offset(1, 0) = Range("C" & i)
End If
i = i + 1
Loop


sur ce lien ton fichier :

http://www.cijoint.fr/cjlink.php?file=cj201003/cijR7Pvot1.xls

Aprés l'avoir récupéré et ouvert cliques sur le bouton "Traitement"

Donnes moi des nouvelles !!!!!

Avatar
FFO
Rebonjour à toi

Effectivement c'était ton cahier des charges dans le document fourni

L'aurais je mal interprété ????

Que falait il comprendre ????

Merci de préciser
Avatar
tatanka
Bon comme je galère de trop (et oui je suis une bille sur VBA...)
Je vous met ci joint un epartie de mon fichier :
http://www.cijoint.fr/cjlink.php?file=cj201003/cijIVB4x9n.xls

Alors les données sont renseignées dans les colonnes C et E.

Quand je viens cliquer sur "cumul semaine" les données sont additionnées
dans les colonnes H et J.

Et quand je viens cliquer sur cumul annuel, les données sont additionnées en
M et 0.

C'est à travers ce bouton "cumul annuel" que j'aimerai que le transfert se
fasse en tenant compte de la donnée en M5.

Le tableau historique commence à partir de la colonne T.

Si l'un d'entre vous arrive à me résourdre mon pb, ca serait vraiment
parfait!!!

ENcore merci à tout ceux qui prennnent du temps à aider les non expert en VBA

"tatanka" a écrit :

Merci à vous trois pour vos réponses rapide

FFO, ca marche nikel sauf que (et oui sinon ce n'est pas drôle) ca ne me
reporte pas les données quand j'ai une cellule vide ou égal à 0

"FFO" a écrit :

> Salut à toi
>
> Ce code devrait faire :
>
> Colonne = Range("G4", Cells(4,
> Range("IV4").End(xlToLeft).Column).Address).Find(What:=Range("C4"),
> After:=Range("G4"), LookIn:=xlValues, LookAt:=xlWhole).Column
> i = 5
> Do While Range("C" & i) <> ""
> If Range("C" & i) <> 0 Then
> Cells(65535, Colonne).End(xlUp).Offset(1, 0) = Range("C" & i)
> End If
> i = i + 1
> Loop
>
>
> sur ce lien ton fichier :
>
> http://www.cijoint.fr/cjlink.php?file=cj201003/cijR7Pvot1.xls
>
> Aprés l'avoir récupéré et ouvert cliques sur le bouton "Traitement"
>
> Donnes moi des nouvelles !!!!!
>
Avatar
Daniel.C
Bonjour.
Essaie :

Private Sub CommandButton2_Click()
Dim c As Range, Col As Integer
Application.ScreenUpdating = False
Col = Application.Match([M5], [A8:BH8], 0)
For Each c In Range([B9], [B65000].End(xlUp))
c.Offset(, 11) = c.Offset(, 11) + c.Offset(, 6)
c.Offset(, 6) = ""
Next c
For Each c In Range([B9], [B65000].End(xlUp))
c.Offset(, 13) = c.Offset(, 13) + c.Offset(, 8)
Cells(c.Row, Col) = c.Offset(, 8)
c.Offset(, 8) = ""
Next c
Application.ScreenUpdating = True
End Sub

Cordialement.
Daniel

Bon comme je galère de trop (et oui je suis une bille sur VBA...)
Je vous met ci joint un epartie de mon fichier :
http://www.cijoint.fr/cjlink.php?file=cj201003/cijIVB4x9n.xls

Alors les données sont renseignées dans les colonnes C et E.

Quand je viens cliquer sur "cumul semaine" les données sont additionnées
dans les colonnes H et J.

Et quand je viens cliquer sur cumul annuel, les données sont additionnées en
M et 0.

C'est à travers ce bouton "cumul annuel" que j'aimerai que le transfert se
fasse en tenant compte de la donnée en M5.

Le tableau historique commence à partir de la colonne T.

Si l'un d'entre vous arrive à me résourdre mon pb, ca serait vraiment
parfait!!!

ENcore merci à tout ceux qui prennnent du temps à aider les non expert en VBA

"tatanka" a écrit :

Merci à vous trois pour vos réponses rapide

FFO, ca marche nikel sauf que (et oui sinon ce n'est pas drôle) ca ne me
reporte pas les données quand j'ai une cellule vide ou égal à 0

"FFO" a écrit :

Salut à toi

Ce code devrait faire :

Colonne = Range("G4", Cells(4,
Range("IV4").End(xlToLeft).Column).Address).Find(What:=Range("C4"),
After:=Range("G4"), LookIn:=xlValues, LookAt:=xlWhole).Column
i = 5
Do While Range("C" & i) <> ""
If Range("C" & i) <> 0 Then
Cells(65535, Colonne).End(xlUp).Offset(1, 0) = Range("C" & i)
End If
i = i + 1
Loop


sur ce lien ton fichier :

http://www.cijoint.fr/cjlink.php?file=cj201003/cijR7Pvot1.xls

Aprés l'avoir récupéré et ouvert cliques sur le bouton "Traitement"

Donnes moi des nouvelles !!!!!

Avatar
FFO
Rebonjour à toi

Je ne vois quelle donnée (colonne H/I/J/K/L) du CUMUL SEMAINE je dois ramener
dans le tableau historique

Merci de préciser la colonne
Avatar
tatanka
Merci Daniel

Ca fonctionne parfaitement

Et merci à FFO qui a passé beaucoup de temps sur mon pb

"Daniel.C" a écrit :

Bonjour.
Essaie :

Private Sub CommandButton2_Click()
Dim c As Range, Col As Integer
Application.ScreenUpdating = False
Col = Application.Match([M5], [A8:BH8], 0)
For Each c In Range([B9], [B65000].End(xlUp))
c.Offset(, 11) = c.Offset(, 11) + c.Offset(, 6)
c.Offset(, 6) = ""
Next c
For Each c In Range([B9], [B65000].End(xlUp))
c.Offset(, 13) = c.Offset(, 13) + c.Offset(, 8)
Cells(c.Row, Col) = c.Offset(, 8)
c.Offset(, 8) = ""
Next c
Application.ScreenUpdating = True
End Sub

Cordialement.
Daniel

> Bon comme je galère de trop (et oui je suis une bille sur VBA...)
> Je vous met ci joint un epartie de mon fichier :
> http://www.cijoint.fr/cjlink.php?file=cj201003/cijIVB4x9n.xls
>
> Alors les données sont renseignées dans les colonnes C et E.
>
> Quand je viens cliquer sur "cumul semaine" les données sont additionnées
> dans les colonnes H et J.
>
> Et quand je viens cliquer sur cumul annuel, les données sont additionnées en
> M et 0.
>
> C'est à travers ce bouton "cumul annuel" que j'aimerai que le transfert se
> fasse en tenant compte de la donnée en M5.
>
> Le tableau historique commence à partir de la colonne T.
>
> Si l'un d'entre vous arrive à me résourdre mon pb, ca serait vraiment
> parfait!!!
>
> ENcore merci à tout ceux qui prennnent du temps à aider les non expert en VBA
>
> "tatanka" a écrit :
>
>> Merci à vous trois pour vos réponses rapide
>>
>> FFO, ca marche nikel sauf que (et oui sinon ce n'est pas drôle) ca ne me
>> reporte pas les données quand j'ai une cellule vide ou égal à 0
>>
>> "FFO" a écrit :
>>
>>> Salut à toi
>>>
>>> Ce code devrait faire :
>>>
>>> Colonne = Range("G4", Cells(4,
>>> Range("IV4").End(xlToLeft).Column).Address).Find(What:=Range("C4"),
>>> After:=Range("G4"), LookIn:=xlValues, LookAt:=xlWhole).Column
>>> i = 5
>>> Do While Range("C" & i) <> ""
>>> If Range("C" & i) <> 0 Then
>>> Cells(65535, Colonne).End(xlUp).Offset(1, 0) = Range("C" & i)
>>> End If
>>> i = i + 1
>>> Loop
>>>
>>>
>>> sur ce lien ton fichier :
>>>
>>> http://www.cijoint.fr/cjlink.php?file=cj201003/cijR7Pvot1.xls
>>>
>>> Aprés l'avoir récupéré et ouvert cliques sur le bouton "Traitement"
>>>
>>> Donnes moi des nouvelles !!!!!
>>>


.

Avatar
tatanka
Bon une dernière et après j'arrête^^

Donc pour un tableau pas de problème ca marche...

Par contre j'ai un deuxième tableau à renseigner via cette manip.

Voici ce que j'ai écrit (en dupliquant la méthode à Daniel):
Private Sub CommandButton2_Click()
Dim c As Range, Col As Integer
Application.ScreenUpdating = False
Col = Application.Match([M5], [A8:BH8], 0)
For Each c In Range([B9], [B65000].End(xlUp))
c.Offset(, 11) = c.Offset(, 11) + c.Offset(, 6)
Cells(c.Row, Col) = c.Offset(, 6)
c.Offset(, 6) = ""
Application.ScreenUpdating = True
Next c
Application.ScreenUpdating = False
Col2 = Application.Match([M5], [A62:BH62], 0)
For Each c In Range([B9], [B65000].End(xlUp))
c.Offset(, 13) = c.Offset(, 13) + c.Offset(, 8)
Cells(c.Row, Col2) = c.Offset(, 8)
c.Offset(, 8) = ""
Next c
Application.ScreenUpdating = True
End Sub

Sauf que la deuxième partie ne fonctionne pas, je n'ai pas de données qui
arrive dans mon deuxième tableau.

Si quelqu'un peut m'aider je suis prenneur



"tatanka" a écrit :

Merci Daniel

Ca fonctionne parfaitement

Et merci à FFO qui a passé beaucoup de temps sur mon pb

"Daniel.C" a écrit :

> Bonjour.
> Essaie :
>
> Private Sub CommandButton2_Click()
> Dim c As Range, Col As Integer
> Application.ScreenUpdating = False
> Col = Application.Match([M5], [A8:BH8], 0)
> For Each c In Range([B9], [B65000].End(xlUp))
> c.Offset(, 11) = c.Offset(, 11) + c.Offset(, 6)
> c.Offset(, 6) = ""
> Next c
> For Each c In Range([B9], [B65000].End(xlUp))
> c.Offset(, 13) = c.Offset(, 13) + c.Offset(, 8)
> Cells(c.Row, Col) = c.Offset(, 8)
> c.Offset(, 8) = ""
> Next c
> Application.ScreenUpdating = True
> End Sub
>
> Cordialement.
> Daniel
>
> > Bon comme je galère de trop (et oui je suis une bille sur VBA...)
> > Je vous met ci joint un epartie de mon fichier :
> > http://www.cijoint.fr/cjlink.php?file=cj201003/cijIVB4x9n.xls
> >
> > Alors les données sont renseignées dans les colonnes C et E.
> >
> > Quand je viens cliquer sur "cumul semaine" les données sont additionnées
> > dans les colonnes H et J.
> >
> > Et quand je viens cliquer sur cumul annuel, les données sont additionnées en
> > M et 0.
> >
> > C'est à travers ce bouton "cumul annuel" que j'aimerai que le transfert se
> > fasse en tenant compte de la donnée en M5.
> >
> > Le tableau historique commence à partir de la colonne T.
> >
> > Si l'un d'entre vous arrive à me résourdre mon pb, ca serait vraiment
> > parfait!!!
> >
> > ENcore merci à tout ceux qui prennnent du temps à aider les non expert en VBA
> >
> > "tatanka" a écrit :
> >
> >> Merci à vous trois pour vos réponses rapide
> >>
> >> FFO, ca marche nikel sauf que (et oui sinon ce n'est pas drôle) ca ne me
> >> reporte pas les données quand j'ai une cellule vide ou égal à 0
> >>
> >> "FFO" a écrit :
> >>
> >>> Salut à toi
> >>>
> >>> Ce code devrait faire :
> >>>
> >>> Colonne = Range("G4", Cells(4,
> >>> Range("IV4").End(xlToLeft).Column).Address).Find(What:=Range("C4"),
> >>> After:=Range("G4"), LookIn:=xlValues, LookAt:=xlWhole).Column
> >>> i = 5
> >>> Do While Range("C" & i) <> ""
> >>> If Range("C" & i) <> 0 Then
> >>> Cells(65535, Colonne).End(xlUp).Offset(1, 0) = Range("C" & i)
> >>> End If
> >>> i = i + 1
> >>> Loop
> >>>
> >>>
> >>> sur ce lien ton fichier :
> >>>
> >>> http://www.cijoint.fr/cjlink.php?file=cj201003/cijR7Pvot1.xls
> >>>
> >>> Aprés l'avoir récupéré et ouvert cliques sur le bouton "Traitement"
> >>>
> >>> Donnes moi des nouvelles !!!!!
> >>>
>
>
> .
>
1 2