OVH Cloud OVH Cloud

Sélection suivant date

27 réponses
Avatar
Rex
Bonjour

Encore une requête pas facile à expliquer
Mais j'espère pouvoir (encore une fois) compter sur vous

Voici

Sur une feuille "Sales"

J'ai toutes mes ventes

Chaque vente est sur une ligne en A la date, en B le nom, en C la société,
etc

A partir de P j'ai mes produits

Je cherche, pour mes statistiques, à récupérer les ventes par mois

ET OUI JE SAIS que je peux le faire par TDC mais je cherche à créer un
fichier utilisable par tous sans trop de connaissances

Donc ce que je voudrais est ceci

Récupérer et additioner (par exemple) toutes les ventes de la colonnes BP de
la feuille "Sales"
dont la date de la colonne A de cette même feuille "Sales" est entre le
1/1/2007 et le 31/1/2007
Et les mettre sur une feuille "TagetsVSSales" dans la colonne K (les ventes
du mois de janvier)
A mon avis je vais être obligé de passer par macro
Et si c'est le cas il faut tenir compte de ce qui suit

La ligne 1 de la feuille "Sales" comprend (de la colonne P à la colonne DO)
comme titre tous les nom de produits (mais pas consécutif !!!!)

Et, sur ma feuille "TargetsVSales" entre J25 et J45 ces mêmes noms par ordre
alphabétique (uniquement les plus courants)

Tous les noms de mes produits sont définis dans une liste appellées
"TS_Sales_Products" et les mois dans une liste "TS_Monh-th"

Si nécessaire je peux poster le fichier
MAIS il est encore très "désordonné" et pas léger (500k)

En tous les cas merci et à bientôt

Rex

7 réponses

1 2 3
Avatar
rthompson
Il n'y a qu'une feuille nommée TargetsVSSales et j'ai changé tous les Sales
de ta macro en TargetsVSSales
Je croyais que cela suffirait pour faire les tests, non?

Et oui j'écris janvier exactement comme dans la ligne 1

Rex


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

Ton lien ne me donne pas le bon fichier
Pas d'onglet "Sales" ni d'Onglet "TargetsVSSales"
Encore moins les Mois

Vérifies et retransmets le moi

Es tu sur dans la boîte de dialogue de saisir exactement un Mois à traiter
présent ligne 1 de l'onglet "TargetsVSSales" (attention la saisie doit
être
conforme)

Dis moi vite !!!!


Bonjour

Oui j'ai mis l'intégrale

et il me demande de donner le mois

Et pour me simplifier les test j'ai mis sur la même feuille en G1, H1,
I1,
J1 les mois janvier, février, mars, avril
Tout vas bien il ne bloque pas mais toute la ligne un est sélectionnée

PS

J'ai même violament secoué ma souris pour lui faire cracher le morceau
sans
succès

Regarde ceci http://cjoint.com/?fhlFpxr7l0


A bientôt

Rex



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

Et ce qui précède est resté coincé dans ta souris !!!! :

'Demande dans une boîte de dialogue du mois à traiter
Mois = InputBox("saisissez le Mois", "Mois traité")
'Recherche de la bonne colonne à alimenter feuille ("TargetsVSSales")
Sheets("TargetsVSSales").Select

Mois est le paramètre que saisie l'utilisateur dans une boîte de
dialogue
pour identifier celui que l'on traite dans la ligne que tu as oubliée :
Mois = InputBox("saisissez le Mois", "Mois traité")
ce qui permet en fin de code de mettre le résultat dans la bonne
cellule
de
la bonne colonne feuille "TargetsVSSales"

Est ce plus claire ainsi !!!

N'hèsite pas à prendre l'intégralité de mon code de :

'Demande dans une boîte de dialogue du mois à traiter
à
Next
Next

et ainsi d'avoir toutes les chances de ne pas avoir de bug

Donne moi tes impressions !!!


Bonjour


Une petite question

Au début de ta macro tu fais un

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Rows("1:1").Select
Selection.Find(What:=Mois, After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate
'Adresse de la cellule portant le Mois à traiter
Mois = ActiveCell.Address
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Pour le moment il se plante à cet endroit

Que cherche-t-il?

dois-je créer un colonne mois en plus de la date?
Et puis bien sur, je dois créer une colonne pour les résultats

Pour le moment je travail sur un fichier vierge avec une seul feuille

A bientôt

Rex



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

Bonjours Rex
Fort des derniers élément que tu m'as donnés
Je te propose ce code qui devrait faire pour l'ensemble de tes
attentes

'Demande dans une boîte de dialogue du mois à traiter
Mois = InputBox("saisissez le Mois", "Mois traité")
'Recherche de la bonne colonne à alimenter feuille
("TargetsVSSales")
Sheets("TargetsVSSales").Select
Rows("1:1").Select
Selection.Find(What:=Mois, After:¬tiveCell, LookIn:=xlFormulas,
_
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext,
_
MatchCase:úlse, SearchFormat:úlse).Activate
'Adresse de la cellule portant le Mois à traiter
Mois = ActiveCell.Address
'1° boucle traitant chaque produit feuille ("Sales") identifié
entre
B1
et
C1 (à adapter)
Sheets("Sales").Select
For Each c In Worksheets("Sales").Range("B1", "C1")
R = 0
'2° boucle traitant le produit de la 1° boucle
Sheets("Sales").Select
For Each d In Worksheets("Sales").Range([A1], [A65535].End(xlUp))
If d >= CDate("01/01/2007") And d <= CDate("31/01/2007") Then
l = d.Row
R = R + Range(Mid(c.Address, 2, 1) & l)
End If
Next
'Recopie du résultat du produit dans la feuille (("TargetsVSSales")
Sheets("TargetsVSSales").Select
'Recherche du nom du produit colonne A (à adapter)
For Each e In Worksheets("TargetsVSSales").Range([A2],
[A65535].End(xlUp))
If e = c Then
'Recopie du résultat dans la bonne cellule
Range(Mid(Mois, 2, 1) & e.Row) = R
Exit For
End If
Next
Next

Je te propose de tester en l'état ce code avec l'exemple que tu m'as
fourni :
1 Date Produit un Produit deux
2 1/1/2007 5 2
3 2/1/2007 2 4
4 3/1/2007 1 9
5 5/2/2007 4 7


Et sur ma feuille "TargetsVSSales" je voudrais trouver

No ligne A B C

1 Produit Janvier Février
2 Produit un 8 (5+2+1) 4
3 Produit deux 15 (2+4+9) 7


Avant d'entamer des modifications en fonction de tes besoins

Une dernière interrogation dans ces paramètres
Lignes :
2 Produit un 8 (5+2+1) 4
3 Produit deux 15 (2+4+9) 7


Que reprèsente le dernier chiffre de chaque ligne : 4 et 7 ???
Merci pour la précision
Dans l'attente de tes impressions !!!




Bon ben je vas essssayai de mettre le feu à ta lanterne :-))))


En simplifier et par exemple (ne pas tenir compte de cellules)

Sur la feuille "Sales" j'aurais


No ligne A B C

1 Date Produit un Produit
deux
2 1/1/2007 5 2
3 2/1/2007 2 4
4 3/1/2007 1 9
5 5/2/2007 4 7


Et sur ma feuille "TargetsVSSales" je voudrais trouver

No ligne A B
C

1 Produit Janvier
Février
2 Produit un 8 (5+2+1) 4
3 Produit deux 15 (2+4+9) 7

Et voilà

J'espère avoir allumé une petite bougie quelque part

Merci

A bientôt

Rex






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

Re bonjours Rex
Je vois que l'on se surpasse en matière de macro
Et avec de beaux résultats !!!!

Mais si tu vois pas d'inconvénient je vais revenir au premier
code
que
je
t'ai proposé avec la correction adéquate pour recopier uniquement
la
somme
dans la 2° cellule de la colonne K

Voici ce nouveau code :

Sheets("Sales").Select
R = 0
For Each c In Worksheets("Sales").Range([A1], [A65535].End(xlUp))
If c >= CDate("01/01/2007") And c <= CDate("31/01/2007") Then
l = c.Row
R = R + Range("BP" & l)
End If
Next
Sheets("TargetsVSSales").Range("K2") = R

Voilà donc pour la première partie

Celà te convient-il ???

Concernant la 2° partie
Je ne comprends pas que d'un côté on prenne en compte toutes les
lignes
de
la colonne A situées entre 2 dates d'un côté pour faire la somme
des
ventes

correspondantes situées colonne BP et faire une différence en
fonction
des
nom de colonnes P à DO
Le résultat quelque soit ces colonnes sera toujours identiques
considérant
toujours les mêmes lignes (même intervale de dates) et la même
colonne
pour

la somme des ventes colonne BP

Il serait bon que tu éclaircisses ma lanterne pour de proposer la
solution
adaptée
Dans l'attente



Et oui

Trois réponses consécutive


J'ai un peu "bidouillé" ton code

et ceci fonctionne

MAIS

il ne me compte plus qu'une valeur et plus toutes les valeurs
du
même
mois


J'ai changé les dates et ajouté les lignes de fin pour faire ce
que
je
proposais

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sheets("TargetsVSSales").Select
Range("K25").Select
Sheets("Sales").Select
For Each c In Worksheets("Sales").Range([A1],
[A65535].End(xlUp))
Sheets("Sales").Select
If c >= CDate("01/05/2007") And c <= CDate("31/05/2007") Then
l = c.Row
Range("BP" & l).Copy
Sheets("TargetsVSSales").Select
Range("AA2").Select
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
Sheets("TargetsVSSales").Select
Range("AA1").Select
ActiveCell.FormulaR1C1 = "=SUM(R[+500]C:R[+1]C)"
Range("AA1").Copy
Sheets("TargetsVSSales").Range("K25").Pastespecial
Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

A bientôt
















Avatar
FFO
Non ton lien n'est pas bon j'ai bien un document Excel mais sans onglet
"TargetsVSSales"

Si tu as mis les Mois de G1 à J1 où as tu mis la colonne des produits
necessaire pour repérer celui traiter afin de mettre son Résultat : colonne F
ou une autre colonne
Ceci conditionne la ligne du code :
For Each e In Worksheets("TargetsVSSales").Range([A2], [A65535].End(xlUp))
qui doit être adapté car en l'état les produits doivent être situés en
colonne A

Merci de me préciser



Il n'y a qu'une feuille nommée TargetsVSSales et j'ai changé tous les Sales
de ta macro en TargetsVSSales
Je croyais que cela suffirait pour faire les tests, non?

Et oui j'écris janvier exactement comme dans la ligne 1

Rex


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

Ton lien ne me donne pas le bon fichier
Pas d'onglet "Sales" ni d'Onglet "TargetsVSSales"
Encore moins les Mois

Vérifies et retransmets le moi

Es tu sur dans la boîte de dialogue de saisir exactement un Mois à traiter
présent ligne 1 de l'onglet "TargetsVSSales" (attention la saisie doit
être
conforme)

Dis moi vite !!!!


Bonjour

Oui j'ai mis l'intégrale

et il me demande de donner le mois

Et pour me simplifier les test j'ai mis sur la même feuille en G1, H1,
I1,
J1 les mois janvier, février, mars, avril
Tout vas bien il ne bloque pas mais toute la ligne un est sélectionnée

PS

J'ai même violament secoué ma souris pour lui faire cracher le morceau
sans
succès

Regarde ceci http://cjoint.com/?fhlFpxr7l0


A bientôt

Rex



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

Et ce qui précède est resté coincé dans ta souris !!!! :

'Demande dans une boîte de dialogue du mois à traiter
Mois = InputBox("saisissez le Mois", "Mois traité")
'Recherche de la bonne colonne à alimenter feuille ("TargetsVSSales")
Sheets("TargetsVSSales").Select

Mois est le paramètre que saisie l'utilisateur dans une boîte de
dialogue
pour identifier celui que l'on traite dans la ligne que tu as oubliée :
Mois = InputBox("saisissez le Mois", "Mois traité")
ce qui permet en fin de code de mettre le résultat dans la bonne
cellule
de
la bonne colonne feuille "TargetsVSSales"

Est ce plus claire ainsi !!!

N'hèsite pas à prendre l'intégralité de mon code de :

'Demande dans une boîte de dialogue du mois à traiter
à
Next
Next

et ainsi d'avoir toutes les chances de ne pas avoir de bug

Donne moi tes impressions !!!


Bonjour


Une petite question

Au début de ta macro tu fais un

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Rows("1:1").Select
Selection.Find(What:=Mois, After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate
'Adresse de la cellule portant le Mois à traiter
Mois = ActiveCell.Address
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Pour le moment il se plante à cet endroit

Que cherche-t-il?

dois-je créer un colonne mois en plus de la date?
Et puis bien sur, je dois créer une colonne pour les résultats

Pour le moment je travail sur un fichier vierge avec une seul feuille

A bientôt

Rex



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

Bonjours Rex
Fort des derniers élément que tu m'as donnés
Je te propose ce code qui devrait faire pour l'ensemble de tes
attentes

'Demande dans une boîte de dialogue du mois à traiter
Mois = InputBox("saisissez le Mois", "Mois traité")
'Recherche de la bonne colonne à alimenter feuille
("TargetsVSSales")
Sheets("TargetsVSSales").Select
Rows("1:1").Select
Selection.Find(What:=Mois, After:¬tiveCell, LookIn:=xlFormulas,
_
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext,
_
MatchCase:úlse, SearchFormat:úlse).Activate
'Adresse de la cellule portant le Mois à traiter
Mois = ActiveCell.Address
'1° boucle traitant chaque produit feuille ("Sales") identifié
entre
B1
et
C1 (à adapter)
Sheets("Sales").Select
For Each c In Worksheets("Sales").Range("B1", "C1")
R = 0
'2° boucle traitant le produit de la 1° boucle
Sheets("Sales").Select
For Each d In Worksheets("Sales").Range([A1], [A65535].End(xlUp))
If d >= CDate("01/01/2007") And d <= CDate("31/01/2007") Then
l = d.Row
R = R + Range(Mid(c.Address, 2, 1) & l)
End If
Next
'Recopie du résultat du produit dans la feuille (("TargetsVSSales")
Sheets("TargetsVSSales").Select
'Recherche du nom du produit colonne A (à adapter)
For Each e In Worksheets("TargetsVSSales").Range([A2],
[A65535].End(xlUp))
If e = c Then
'Recopie du résultat dans la bonne cellule
Range(Mid(Mois, 2, 1) & e.Row) = R
Exit For
End If
Next
Next

Je te propose de tester en l'état ce code avec l'exemple que tu m'as
fourni :
1 Date Produit un Produit deux
2 1/1/2007 5 2
3 2/1/2007 2 4
4 3/1/2007 1 9
5 5/2/2007 4 7


Et sur ma feuille "TargetsVSSales" je voudrais trouver

No ligne A B C

1 Produit Janvier Février
2 Produit un 8 (5+2+1) 4
3 Produit deux 15 (2+4+9) 7


Avant d'entamer des modifications en fonction de tes besoins

Une dernière interrogation dans ces paramètres
Lignes :
2 Produit un 8 (5+2+1) 4
3 Produit deux 15 (2+4+9) 7


Que reprèsente le dernier chiffre de chaque ligne : 4 et 7 ???
Merci pour la précision
Dans l'attente de tes impressions !!!




Bon ben je vas essssayai de mettre le feu à ta lanterne :-))))


En simplifier et par exemple (ne pas tenir compte de cellules)

Sur la feuille "Sales" j'aurais


No ligne A B C

1 Date Produit un Produit
deux
2 1/1/2007 5 2
3 2/1/2007 2 4
4 3/1/2007 1 9
5 5/2/2007 4 7


Et sur ma feuille "TargetsVSSales" je voudrais trouver

No ligne A B
C

1 Produit Janvier
Février
2 Produit un 8 (5+2+1) 4
3 Produit deux 15 (2+4+9) 7

Et voilà

J'espère avoir allumé une petite bougie quelque part

Merci

A bientôt

Rex






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

Re bonjours Rex
Je vois que l'on se surpasse en matière de macro
Et avec de beaux résultats !!!!

Mais si tu vois pas d'inconvénient je vais revenir au premier
code
que
je
t'ai proposé avec la correction adéquate pour recopier uniquement
la
somme
dans la 2° cellule de la colonne K

Voici ce nouveau code :

Sheets("Sales").Select
R = 0
For Each c In Worksheets("Sales").Range([A1], [A65535].End(xlUp))
If c >= CDate("01/01/2007") And c <= CDate("31/01/2007") Then
l = c.Row
R = R + Range("BP" & l)
End If
Next
Sheets("TargetsVSSales").Range("K2") = R

Voilà donc pour la première partie

Celà te convient-il ???

Concernant la 2° partie
Je ne comprends pas que d'un côté on prenne en compte toutes les
lignes
de
la colonne A situées entre 2 dates d'un côté pour faire la somme
des
ventes

correspondantes situées colonne BP et faire une différence en
fonction
des
nom de colonnes P à DO
Le résultat quelque soit ces colonnes sera toujours identiques
considérant
toujours les mêmes lignes (même intervale de dates) et la même
colonne
pour

la somme des ventes colonne BP

Il serait bon que tu éclaircisses ma lanterne pour de proposer la
solution
adaptée
Dans l'attente



Et oui


















Avatar
Modeste
Bonsour® FFO avec ferveur ;o))) vous nous disiez :

Non ton lien n'est pas bon
qui possede d'ailleurs des liaisons externes....


en effet !!!
comme de plus je n'ai pas suivi toute ta démarche c'est pas trés simple de
comprendre :-(((
de plus il va y avaoir un souci avec :
La ligne 1 de la feuille "Sales" comprend (de la colonne P à la colonne DO)
comme titre tous les nom de produits (mais pas consécutif !!!!)


comment parcourir les produits sans régle d'identification ???
(Codes?, toutes les x colonnes, par paquet de N ?????)

--
--
@+
;o)))

Avatar
rthompson
Et voilà le bon lien

J'y ai changé les A en F

A bientôt

Rex

http://cjoint.com/?fhn0NEVQVB

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

Non ton lien n'est pas bon j'ai bien un document Excel mais sans onglet
"TargetsVSSales"

Si tu as mis les Mois de G1 à J1 où as tu mis la colonne des produits
necessaire pour repérer celui traiter afin de mettre son Résultat :
colonne F
ou une autre colonne
Ceci conditionne la ligne du code :
For Each e In Worksheets("TargetsVSSales").Range([A2], [A65535].End(xlUp))
qui doit être adapté car en l'état les produits doivent être situés en
colonne A

Merci de me préciser



Il n'y a qu'une feuille nommée TargetsVSSales et j'ai changé tous les
Sales
de ta macro en TargetsVSSales
Je croyais que cela suffirait pour faire les tests, non?

Et oui j'écris janvier exactement comme dans la ligne 1

Rex


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

Ton lien ne me donne pas le bon fichier
Pas d'onglet "Sales" ni d'Onglet "TargetsVSSales"
Encore moins les Mois

Vérifies et retransmets le moi

Es tu sur dans la boîte de dialogue de saisir exactement un Mois à
traiter
présent ligne 1 de l'onglet "TargetsVSSales" (attention la saisie doit
être
conforme)

Dis moi vite !!!!


Bonjour

Oui j'ai mis l'intégrale

et il me demande de donner le mois

Et pour me simplifier les test j'ai mis sur la même feuille en G1, H1,
I1,
J1 les mois janvier, février, mars, avril
Tout vas bien il ne bloque pas mais toute la ligne un est sélectionnée

PS

J'ai même violament secoué ma souris pour lui faire cracher le morceau
sans
succès

Regarde ceci http://cjoint.com/?fhlFpxr7l0


A bientôt

Rex



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

Et ce qui précède est resté coincé dans ta souris !!!! :

'Demande dans une boîte de dialogue du mois à traiter
Mois = InputBox("saisissez le Mois", "Mois traité")
'Recherche de la bonne colonne à alimenter feuille
("TargetsVSSales")
Sheets("TargetsVSSales").Select

Mois est le paramètre que saisie l'utilisateur dans une boîte de
dialogue
pour identifier celui que l'on traite dans la ligne que tu as
oubliée :
Mois = InputBox("saisissez le Mois", "Mois traité")
ce qui permet en fin de code de mettre le résultat dans la bonne
cellule
de
la bonne colonne feuille "TargetsVSSales"

Est ce plus claire ainsi !!!

N'hèsite pas à prendre l'intégralité de mon code de :

'Demande dans une boîte de dialogue du mois à traiter
à
Next
Next

et ainsi d'avoir toutes les chances de ne pas avoir de bug

Donne moi tes impressions !!!


Bonjour


Une petite question

Au début de ta macro tu fais un

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Rows("1:1").Select
Selection.Find(What:=Mois, After:¬tiveCell,
LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate
'Adresse de la cellule portant le Mois à traiter
Mois = ActiveCell.Address
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Pour le moment il se plante à cet endroit

Que cherche-t-il?

dois-je créer un colonne mois en plus de la date?
Et puis bien sur, je dois créer une colonne pour les résultats

Pour le moment je travail sur un fichier vierge avec une seul
feuille

A bientôt

Rex



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

Bonjours Rex
Fort des derniers élément que tu m'as donnés
Je te propose ce code qui devrait faire pour l'ensemble de tes
attentes

'Demande dans une boîte de dialogue du mois à traiter
Mois = InputBox("saisissez le Mois", "Mois traité")
'Recherche de la bonne colonne à alimenter feuille
("TargetsVSSales")
Sheets("TargetsVSSales").Select
Rows("1:1").Select
Selection.Find(What:=Mois, After:¬tiveCell,
LookIn:=xlFormulas,
_
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext,
_
MatchCase:úlse, SearchFormat:úlse).Activate
'Adresse de la cellule portant le Mois à traiter
Mois = ActiveCell.Address
'1° boucle traitant chaque produit feuille ("Sales") identifié
entre
B1
et
C1 (à adapter)
Sheets("Sales").Select
For Each c In Worksheets("Sales").Range("B1", "C1")
R = 0
'2° boucle traitant le produit de la 1° boucle
Sheets("Sales").Select
For Each d In Worksheets("Sales").Range([A1], [A65535].End(xlUp))
If d >= CDate("01/01/2007") And d <= CDate("31/01/2007") Then
l = d.Row
R = R + Range(Mid(c.Address, 2, 1) & l)
End If
Next
'Recopie du résultat du produit dans la feuille
(("TargetsVSSales")
Sheets("TargetsVSSales").Select
'Recherche du nom du produit colonne A (à adapter)
For Each e In Worksheets("TargetsVSSales").Range([A2],
[A65535].End(xlUp))
If e = c Then
'Recopie du résultat dans la bonne cellule
Range(Mid(Mois, 2, 1) & e.Row) = R
Exit For
End If
Next
Next

Je te propose de tester en l'état ce code avec l'exemple que tu
m'as
fourni :
1 Date Produit un Produit deux
2 1/1/2007 5 2
3 2/1/2007 2 4
4 3/1/2007 1 9
5 5/2/2007 4 7


Et sur ma feuille "TargetsVSSales" je voudrais trouver

No ligne A B C

1 Produit Janvier Février
2 Produit un 8 (5+2+1) 4
3 Produit deux 15 (2+4+9) 7


Avant d'entamer des modifications en fonction de tes besoins

Une dernière interrogation dans ces paramètres
Lignes :
2 Produit un 8 (5+2+1) 4
3 Produit deux 15 (2+4+9) 7


Que reprèsente le dernier chiffre de chaque ligne : 4 et 7 ???
Merci pour la précision
Dans l'attente de tes impressions !!!




Bon ben je vas essssayai de mettre le feu à ta lanterne :-))))


En simplifier et par exemple (ne pas tenir compte de cellules)

Sur la feuille "Sales" j'aurais


No ligne A B C

1 Date Produit un Produit
deux
2 1/1/2007 5 2
3 2/1/2007 2
4
4 3/1/2007 1 9
5 5/2/2007 4 7


Et sur ma feuille "TargetsVSSales" je voudrais trouver

No ligne A B
C

1 Produit Janvier
Février
2 Produit un 8 (5+2+1)
4
3 Produit deux 15 (2+4+9) 7

Et voilà

J'espère avoir allumé une petite bougie quelque part

Merci

A bientôt

Rex






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

Re bonjours Rex
Je vois que l'on se surpasse en matière de macro
Et avec de beaux résultats !!!!

Mais si tu vois pas d'inconvénient je vais revenir au premier
code
que
je
t'ai proposé avec la correction adéquate pour recopier
uniquement
la
somme
dans la 2° cellule de la colonne K

Voici ce nouveau code :

Sheets("Sales").Select
R = 0
For Each c In Worksheets("Sales").Range([A1],
[A65535].End(xlUp))
If c >= CDate("01/01/2007") And c <= CDate("31/01/2007") Then
l = c.Row
R = R + Range("BP" & l)
End If
Next
Sheets("TargetsVSSales").Range("K2") = R

Voilà donc pour la première partie

Celà te convient-il ???

Concernant la 2° partie
Je ne comprends pas que d'un côté on prenne en compte toutes
les
lignes
de
la colonne A situées entre 2 dates d'un côté pour faire la
somme
des
ventes

correspondantes situées colonne BP et faire une différence en
fonction
des
nom de colonnes P à DO
Le résultat quelque soit ces colonnes sera toujours identiques
considérant
toujours les mêmes lignes (même intervale de dates) et la même
colonne
pour

la somme des ventes colonne BP

Il serait bon que tu éclaircisses ma lanterne pour de proposer
la
solution
adaptée
Dans l'attente



Et oui




















Avatar
rthompson
ENFIN


J'ai trouvé un truc que tu ne comprends pas

Et ben je ne te l'expliquerai pas NAH!!!!!


;-))))))


Franchement si l'usine à gaz ne te fais pas peur je te le poste avec plaisir

Mais pas ici

contacte moi via

en retirant le oublimoi

Sinon suis la conversation et je suis sur que tu comprendra

A bientôt et encore merci


Rex





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

Bonsour® FFO avec ferveur ;o))) vous nous disiez :

Non ton lien n'est pas bon
qui possede d'ailleurs des liaisons externes....


en effet !!!
comme de plus je n'ai pas suivi toute ta démarche c'est pas trés simple de
comprendre :-(((
de plus il va y avaoir un souci avec :
La ligne 1 de la feuille "Sales" comprend (de la colonne P à la colonne
DO)
comme titre tous les nom de produits (mais pas consécutif !!!!)


comment parcourir les produits sans régle d'identification ???
(Codes?, toutes les x colonnes, par paquet de N ?????)

--
--
@+
;o)))





Avatar
FFO
Finalement grâce à ce lien correct j'ai pu acceder au bon fichier et de
constater que mon code fonctionne bien
Je l'ai compte tenu de la nouvelle donne allégé et complété
Car un élément qui m'avait échaper est à prendre en compte
Si en début je te demande le mois traité il faut que j'en tienne compte dans
les dates à rechercher
par exemple :
Janvier, date du 01/01/2007 au 31/01/2007
Février, date du 01/02/2007 au 28/02/2007
Mars, date du 01/03/2007 au 31/03/2007
Ainsi de suite
De plus encore et ce sera la cerise sur le gâteau et ce afin qu'il soit
utilisable d'année en année la prise en compte de l'année courrante
Ce qui veux dire que l'année prochaine ce code fonctionnera pour les ventes
2008 et les suivantes

Voilà la petite merveille :

Année = Mid(Date, 7, 4)
Mois = InputBox("saisissez le Mois", "Mois traité")
For I = 1 To 12
M = UCase(Format(DateSerial(2007, I, 1), "mmmm"))
If UCase(Mois) = M Then
M = I
Exit For
End If
Next
Début = "01/0" & M & "/" & Année
If I = 1 Or I = 3 Or I = 5 Or I = 7 Or I = 8 Or I = 10 Or I = 12 Then
Fin = "31/0" & M & "/" & Année
Else
If I <> 2 Then
Fin = "30/0" & M & "/" & Année
End If
End If
If I = 2 Then
Fin = "28/0" & M & "/" & Année
End If
Sheets("TargetsVSSales").Select
Rows("1:1").Select
Selection.Find(What:=Mois, After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate
Mois = ActiveCell.Address
For Each c In Worksheets("TargetsVSSales").Range("B1", "C1")
R = 0
For Each d In Worksheets("TargetsVSSales").Range([A1], [A65535].End(xlUp))
If d >= CDate(Début) And d <= CDate(Fin) Then
l = d.Row
R = R + Range(Mid(c.Address, 2, 1) & l)
End If
Next
For Each e In Worksheets("TargetsVSSales").Range([F2], [F65535].End(xlUp))
If e = c Then
Range(Mid(Mois, 2, 1) & e.Row) = R
Exit For
End If
Next
Next

Qu'en penses tu ???
Les améliorations te conviennent elles ???
Dis moi !!!


Et voilà le bon lien

J'y ai changé les A en F

A bientôt

Rex

http://cjoint.com/?fhn0NEVQVB

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

Non ton lien n'est pas bon j'ai bien un document Excel mais sans onglet
"TargetsVSSales"

Si tu as mis les Mois de G1 à J1 où as tu mis la colonne des produits
necessaire pour repérer celui traiter afin de mettre son Résultat :
colonne F
ou une autre colonne
Ceci conditionne la ligne du code :
For Each e In Worksheets("TargetsVSSales").Range([A2], [A65535].End(xlUp))
qui doit être adapté car en l'état les produits doivent être situés en
colonne A

Merci de me préciser



Il n'y a qu'une feuille nommée TargetsVSSales et j'ai changé tous les
Sales
de ta macro en TargetsVSSales
Je croyais que cela suffirait pour faire les tests, non?

Et oui j'écris janvier exactement comme dans la ligne 1

Rex


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

Ton lien ne me donne pas le bon fichier
Pas d'onglet "Sales" ni d'Onglet "TargetsVSSales"
Encore moins les Mois

Vérifies et retransmets le moi

Es tu sur dans la boîte de dialogue de saisir exactement un Mois à
traiter
présent ligne 1 de l'onglet "TargetsVSSales" (attention la saisie doit
être
conforme)

Dis moi vite !!!!


Bonjour

Oui j'ai mis l'intégrale

et il me demande de donner le mois

Et pour me simplifier les test j'ai mis sur la même feuille en G1, H1,
I1,
J1 les mois janvier, février, mars, avril
Tout vas bien il ne bloque pas mais toute la ligne un est sélectionnée

PS

J'ai même violament secoué ma souris pour lui faire cracher le morceau
sans
succès

Regarde ceci http://cjoint.com/?fhlFpxr7l0


A bientôt

Rex



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

Et ce qui précède est resté coincé dans ta souris !!!! :

'Demande dans une boîte de dialogue du mois à traiter
Mois = InputBox("saisissez le Mois", "Mois traité")
'Recherche de la bonne colonne à alimenter feuille
("TargetsVSSales")
Sheets("TargetsVSSales").Select

Mois est le paramètre que saisie l'utilisateur dans une boîte de
dialogue
pour identifier celui que l'on traite dans la ligne que tu as
oubliée :
Mois = InputBox("saisissez le Mois", "Mois traité")
ce qui permet en fin de code de mettre le résultat dans la bonne
cellule
de
la bonne colonne feuille "TargetsVSSales"

Est ce plus claire ainsi !!!

N'hèsite pas à prendre l'intégralité de mon code de :

'Demande dans une boîte de dialogue du mois à traiter
à
Next
Next

et ainsi d'avoir toutes les chances de ne pas avoir de bug

Donne moi tes impressions !!!


Bonjour


Une petite question

Au début de ta macro tu fais un

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Rows("1:1").Select
Selection.Find(What:=Mois, After:¬tiveCell,
LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate
'Adresse de la cellule portant le Mois à traiter
Mois = ActiveCell.Address
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Pour le moment il se plante à cet endroit

Que cherche-t-il?

dois-je créer un colonne mois en plus de la date?
Et puis bien sur, je dois créer une colonne pour les résultats

Pour le moment je travail sur un fichier vierge avec une seul
feuille

A bientôt

Rex



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

Bonjours Rex
Fort des derniers élément que tu m'as donnés
Je te propose ce code qui devrait faire pour l'ensemble de tes
attentes

'Demande dans une boîte de dialogue du mois à traiter
Mois = InputBox("saisissez le Mois", "Mois traité")
'Recherche de la bonne colonne à alimenter feuille
("TargetsVSSales")
Sheets("TargetsVSSales").Select
Rows("1:1").Select
Selection.Find(What:=Mois, After:¬tiveCell,
LookIn:=xlFormulas,
_
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext,
_
MatchCase:úlse, SearchFormat:úlse).Activate
'Adresse de la cellule portant le Mois à traiter
Mois = ActiveCell.Address
'1° boucle traitant chaque produit feuille ("Sales") identifié
entre
B1
et
C1 (à adapter)
Sheets("Sales").Select
For Each c In Worksheets("Sales").Range("B1", "C1")
R = 0
'2° boucle traitant le produit de la 1° boucle
Sheets("Sales").Select
For Each d In Worksheets("Sales").Range([A1], [A65535].End(xlUp))
If d >= CDate("01/01/2007") And d <= CDate("31/01/2007") Then
l = d.Row
R = R + Range(Mid(c.Address, 2, 1) & l)
End If
Next
'Recopie du résultat du produit dans la feuille
(("TargetsVSSales")
Sheets("TargetsVSSales").Select
'Recherche du nom du produit colonne A (à adapter)
For Each e In Worksheets("TargetsVSSales").Range([A2],
[A65535].End(xlUp))
If e = c Then
'Recopie du résultat dans la bonne cellule
Range(Mid(Mois, 2, 1) & e.Row) = R
Exit For
End If
Next
Next

Je te propose de tester en l'état ce code avec l'exemple que tu
m'as
fourni :
1 Date Produit un Produit deux
2 1/1/2007 5 2
3 2/1/2007 2 4
4 3/1/2007 1 9
5 5/2/2007 4 7


Et sur ma feuille "TargetsVSSales" je voudrais trouver

No ligne A B C

1 Produit Janvier Février
2 Produit un 8 (5+2+1) 4
3 Produit deux 15 (2+4+9) 7


Avant d'entamer des modifications en fonction de tes besoins

Une dernière interrogation dans ces paramètres
Lignes :
2 Produit un 8 (5+2+1) 4
3 Produit deux 15 (2+4+9) 7


Que reprèsente le dernier chiffre de chaque ligne : 4 et 7 ???
Merci pour la précision
Dans l'attente de tes impressions !!!




Bon ben je vas essssayai de mettre le feu à ta lanterne :-))))


En simplifier et par exemple (ne pas tenir compte de cellules)

Sur la feuille "Sales" j'aurais


No ligne A B C

1 Date Produit un Produit
deux
2 1/1/2007 5 2
3 2/1/2007 2
4
4 3/1/2007 1 9
5 5/2/2007 4 7


Et sur ma feuille "TargetsVSSales" je voudrais trouver

No ligne A B
C

1 Produit Janvier
Février
2 Produit un 8 (5+2+1)
4
3 Produit deux 15 (2+4+9) 7

Et voilà

J'espère avoir allumé une petite bougie quelque part

Merci

A bientôt

Rex






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

Re bonjours Rex
Je vois que l'on se surpasse en matière de macro
Et avec de beaux résultats !!!!

Mais si tu vois pas d'inconvénient je vais revenir au premier
code
que
je
t'ai proposé avec la correction adéquate pour recopier
uniquement
la
somme
dans la 2° cellule de la colonne K

Voici ce nouveau code :




















Avatar
Rex
Bonsoir

Je viens de rentrer

ELLE FONCTIONNE !!!!!!!!

Maintenant il n'y a plus qu'à adapter et transférer sur le fichier complet

Et ben dis donc, quand ce sera fini il sera temps pour moi de préparer une
petite tournée pour payer un petit verre à tous ceux qui m'ont SERIEUSEMENT
aidé


Je te tiens au courant

Rex



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

Finalement grâce à ce lien correct j'ai pu acceder au bon fichier et de
constater que mon code fonctionne bien
Je l'ai compte tenu de la nouvelle donne allégé et complété
Car un élément qui m'avait échaper est à prendre en compte
Si en début je te demande le mois traité il faut que j'en tienne compte
dans

les dates à rechercher
par exemple :
Janvier, date du 01/01/2007 au 31/01/2007
Février, date du 01/02/2007 au 28/02/2007
Mars, date du 01/03/2007 au 31/03/2007
Ainsi de suite
De plus encore et ce sera la cerise sur le gâteau et ce afin qu'il soit
utilisable d'année en année la prise en compte de l'année courrante
Ce qui veux dire que l'année prochaine ce code fonctionnera pour les
ventes

2008 et les suivantes

Voilà la petite merveille :

Année = Mid(Date, 7, 4)
Mois = InputBox("saisissez le Mois", "Mois traité")
For I = 1 To 12
M = UCase(Format(DateSerial(2007, I, 1), "mmmm"))
If UCase(Mois) = M Then
M = I
Exit For
End If
Next
Début = "01/0" & M & "/" & Année
If I = 1 Or I = 3 Or I = 5 Or I = 7 Or I = 8 Or I = 10 Or I = 12 Then
Fin = "31/0" & M & "/" & Année
Else
If I <> 2 Then
Fin = "30/0" & M & "/" & Année
End If
End If
If I = 2 Then
Fin = "28/0" & M & "/" & Année
End If
Sheets("TargetsVSSales").Select
Rows("1:1").Select
Selection.Find(What:=Mois, After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate
Mois = ActiveCell.Address
For Each c In Worksheets("TargetsVSSales").Range("B1", "C1")
R = 0
For Each d In Worksheets("TargetsVSSales").Range([A1], [A65535].End(xlUp))
If d >= CDate(Début) And d <= CDate(Fin) Then
l = d.Row
R = R + Range(Mid(c.Address, 2, 1) & l)
End If
Next
For Each e In Worksheets("TargetsVSSales").Range([F2], [F65535].End(xlUp))
If e = c Then
Range(Mid(Mois, 2, 1) & e.Row) = R
Exit For
End If
Next
Next

Qu'en penses tu ???
Les améliorations te conviennent elles ???
Dis moi !!!


Et voilà le bon lien

J'y ai changé les A en F

A bientôt

Rex

http://cjoint.com/?fhn0NEVQVB

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

Non ton lien n'est pas bon j'ai bien un document Excel mais sans
onglet



"TargetsVSSales"

Si tu as mis les Mois de G1 à J1 où as tu mis la colonne des produits
necessaire pour repérer celui traiter afin de mettre son Résultat :
colonne F
ou une autre colonne
Ceci conditionne la ligne du code :
For Each e In Worksheets("TargetsVSSales").Range([A2],
[A65535].End(xlUp))



qui doit être adapté car en l'état les produits doivent être situés en
colonne A

Merci de me préciser



Il n'y a qu'une feuille nommée TargetsVSSales et j'ai changé tous les
Sales
de ta macro en TargetsVSSales
Je croyais que cela suffirait pour faire les tests, non?

Et oui j'écris janvier exactement comme dans la ligne 1

Rex


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





Ton lien ne me donne pas le bon fichier
Pas d'onglet "Sales" ni d'Onglet "TargetsVSSales"
Encore moins les Mois

Vérifies et retransmets le moi

Es tu sur dans la boîte de dialogue de saisir exactement un Mois à
traiter
présent ligne 1 de l'onglet "TargetsVSSales" (attention la saisie
doit





être
conforme)

Dis moi vite !!!!


Bonjour

Oui j'ai mis l'intégrale

et il me demande de donner le mois

Et pour me simplifier les test j'ai mis sur la même feuille en G1,
H1,






I1,
J1 les mois janvier, février, mars, avril
Tout vas bien il ne bloque pas mais toute la ligne un est
sélectionnée







PS

J'ai même violament secoué ma souris pour lui faire cracher le
morceau






sans
succès

Regarde ceci http://cjoint.com/?fhlFpxr7l0


A bientôt

Rex



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







Et ce qui précède est resté coincé dans ta souris !!!! :

'Demande dans une boîte de dialogue du mois à traiter
Mois = InputBox("saisissez le Mois", "Mois traité")
'Recherche de la bonne colonne à alimenter feuille
("TargetsVSSales")
Sheets("TargetsVSSales").Select

Mois est le paramètre que saisie l'utilisateur dans une boîte de
dialogue
pour identifier celui que l'on traite dans la ligne que tu as
oubliée :
Mois = InputBox("saisissez le Mois", "Mois traité")
ce qui permet en fin de code de mettre le résultat dans la bonne
cellule
de
la bonne colonne feuille "TargetsVSSales"

Est ce plus claire ainsi !!!

N'hèsite pas à prendre l'intégralité de mon code de :

'Demande dans une boîte de dialogue du mois à traiter
à
Next
Next

et ainsi d'avoir toutes les chances de ne pas avoir de bug

Donne moi tes impressions !!!


Bonjour


Une petite question

Au début de ta macro tu fais un

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Rows("1:1").Select
Selection.Find(What:=Mois, After:¬tiveCell,
LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate
'Adresse de la cellule portant le Mois à traiter
Mois = ActiveCell.Address
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Pour le moment il se plante à cet endroit

Que cherche-t-il?

dois-je créer un colonne mois en plus de la date?
Et puis bien sur, je dois créer une colonne pour les résultats

Pour le moment je travail sur un fichier vierge avec une seul
feuille

A bientôt

Rex



"FFO" a écrit dans le message
de








news:

Bonjours Rex
Fort des derniers élément que tu m'as donnés
Je te propose ce code qui devrait faire pour l'ensemble de
tes









attentes

'Demande dans une boîte de dialogue du mois à traiter
Mois = InputBox("saisissez le Mois", "Mois traité")
'Recherche de la bonne colonne à alimenter feuille
("TargetsVSSales")
Sheets("TargetsVSSales").Select
Rows("1:1").Select
Selection.Find(What:=Mois, After:¬tiveCell,
LookIn:=xlFormulas,
_
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext,
_
MatchCase:úlse, SearchFormat:úlse).Activate
'Adresse de la cellule portant le Mois à traiter
Mois = ActiveCell.Address
'1° boucle traitant chaque produit feuille ("Sales")
identifié









entre
B1
et
C1 (à adapter)
Sheets("Sales").Select
For Each c In Worksheets("Sales").Range("B1", "C1")
R = 0
'2° boucle traitant le produit de la 1° boucle
Sheets("Sales").Select
For Each d In Worksheets("Sales").Range([A1],
[A65535].End(xlUp))









If d >= CDate("01/01/2007") And d <= CDate("31/01/2007") Then
l = d.Row
R = R + Range(Mid(c.Address, 2, 1) & l)
End If
Next
'Recopie du résultat du produit dans la feuille
(("TargetsVSSales")
Sheets("TargetsVSSales").Select
'Recherche du nom du produit colonne A (à adapter)
For Each e In Worksheets("TargetsVSSales").Range([A2],
[A65535].End(xlUp))
If e = c Then
'Recopie du résultat dans la bonne cellule
Range(Mid(Mois, 2, 1) & e.Row) = R
Exit For
End If
Next
Next

Je te propose de tester en l'état ce code avec l'exemple que
tu









m'as
fourni :
1 Date Produit un Produit deux
2 1/1/2007 5 2
3 2/1/2007 2 4
4 3/1/2007 1 9
5 5/2/2007 4 7


Et sur ma feuille "TargetsVSSales" je voudrais trouver

No ligne A B C

1 Produit Janvier Février
2 Produit un 8 (5+2+1) 4
3 Produit deux 15 (2+4+9) 7


Avant d'entamer des modifications en fonction de tes besoins

Une dernière interrogation dans ces paramètres
Lignes :
2 Produit un 8 (5+2+1) 4
3 Produit deux 15 (2+4+9) 7


Que reprèsente le dernier chiffre de chaque ligne : 4 et 7
???









Merci pour la précision
Dans l'attente de tes impressions !!!




Bon ben je vas essssayai de mettre le feu à ta lanterne
:-))))












En simplifier et par exemple (ne pas tenir compte de
cellules)











Sur la feuille "Sales" j'aurais


No ligne A B C

1 Date Produit un
Produit










deux
2 1/1/2007 5
2










3 2/1/2007 2
4
4 3/1/2007 1
9










5 5/2/2007 4
7












Et sur ma feuille "TargetsVSSales" je voudrais trouver

No ligne A B
C

1 Produit Janvier
Février
2 Produit un 8 (5+2+1)
4
3 Produit deux 15 (2+4+9)
7











Et voilà

J'espère avoir allumé une petite bougie quelque part

Merci

A bientôt

Rex






"FFO" a écrit dans le
message de










news:

Re bonjours Rex
Je vois que l'on se surpasse en matière de macro
Et avec de beaux résultats !!!!

Mais si tu vois pas d'inconvénient je vais revenir au
premier











code
que
je
t'ai proposé avec la correction adéquate pour recopier
uniquement
la
somme
dans la 2° cellule de la colonne K

Voici ce nouveau code :






















1 2 3