Je cherche Í faire un calcul de cumul :
Depuis la valeur d'une cellule dans un fichier A, je cherche dans un fichier B cette valeur (elle peut s'y trouver plusieurs fois); si elle est trouvée, je mets dans une variable Qté la valeur de la cellule adjacente (.offset(0,1)); puis je cherche l'occurence suivante; si il y en a une, je fais Qté = Qté + .offset(0,1) sinon je récupère la variable Qté.
Je bute sur la gestion de find et findnext avec ma somme cumulée. J'ai pondu un truc :
'__________________________
Cherche = ActiveCell
Qté_Reçue = 0
With Workbooks(Fichier_Réceptions).Sheets(1)
Set C = .Cells.Find(what:=Cherche, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If Not C Is Nothing Then
FirstAddress = C.Address
Qté_Reçue = C.Offset(0, -2)
End If
Do
Set C = .Cells.FindNext(C)
LastAddress = C.Address
Loop While Not C Is Nothing And LastAddress <> FirstAddress
If Not C Is Nothing Then Qté_Reçue = Qté_Reçue + C.Offset(0, -2)
End With
ActiveCell.Offset(0, -4) = Qté_Reçue
'________________________________________________
J'ai essayé un tas de combinaisons différentes...mais rien ne fonctionne !
Merci d'avance de sauver les quelques neurones qui me restent !
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichD
Le 06/04/22 Í 10:10, ThierryP a écrit :
Décidément, ce n'est pas mon jour ..... Je cherche Í faire un calcul de cumul : Depuis la valeur d'une cellule dans un fichier A, je cherche dans un fichier B cette valeur (elle peut s'y trouver plusieurs fois); si elle est trouvée, je mets dans une variable Qté la valeur de la cellule adjacente (.offset(0,1)); puis je cherche l'occurence suivante; si il y en a une, je fais Qté = Qté + .offset(0,1) sinon je récupère la variable Qté. Je bute sur la gestion de find et findnext avec ma somme cumulée. J'ai pondu un truc : '__________________________ Cherche = ActiveCell Qté_Reçue = 0 With Workbooks(Fichier_Réceptions).Sheets(1) Set C = .Cells.Find(what:=Cherche, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, _ SearchDirection:=xlNext, MatchCase:úlse, SearchFormat:úlse) If Not C Is Nothing Then FirstAddress = C.Address Qté_Reçue = C.Offset(0, -2) End If Do Set C = .Cells.FindNext(C) LastAddress = C.Address Loop While Not C Is Nothing And LastAddress <> FirstAddress If Not C Is Nothing Then Qté_Reçue = Qté_Reçue + C.Offset(0, -2) End With ActiveCell.Offset(0, -4) = Qté_Reçue '________________________________________________ J'ai essayé un tas de combinaisons différentes...mais rien ne fonctionne ! Merci d'avance de sauver les quelques neurones qui me restent ! ThierryP
Bonjour, Essaie comme ceci : '--------------------------------- Sub test12() Dim A As String, B As String, Adr As String Dim Trouve As Range, Total As Double 'La macro dans le classeur A A = ThisWorkbook.Name 'fichier source o͹ sont les valeurs 'dont je veux chercher 'Nom du classeur o͹ je vais chercher B = Workbooks("Classeur2").Name With Workbooks(A).Sheets(1) 'Adapter le nom de la feuille Set Rg = .Range("A1:A10") 'plage source dont je cherche la somme 'pour chacune des cellules. For Each C In Rg If C <> "" Then With Workbooks(B).Sheets(1) 'Adapter le nom de la feuille With .Cells Set Trouve = .Find(what:=C, LookIn:=xlFormulas, LookAt:=xlWhole) If Not Trouve Is Nothing Then Adr = Trouve.Address Do Total = Total + C.Value Set Trouve = .FindNext(Trouve) Loop Until Trouve.Address = Adr C.Offset(, 1) = Total Total = 0 End If End With End With End If Next End With End Sub '--------------------------------- MichD
Le 06/04/22 Í 10:10, ThierryP a écrit :
Décidément, ce n'est pas mon jour .....
Je cherche Í faire un calcul de cumul :
Depuis la valeur d'une cellule dans un fichier A, je cherche dans un fichier B cette valeur (elle peut s'y trouver plusieurs fois); si elle est trouvée, je mets dans une variable Qté la valeur de la cellule adjacente (.offset(0,1)); puis je cherche l'occurence suivante; si il y en a une, je fais Qté = Qté + .offset(0,1) sinon je récupère la variable Qté.
Je bute sur la gestion de find et findnext avec ma somme cumulée. J'ai pondu un truc :
'__________________________
Cherche = ActiveCell
Qté_Reçue = 0
With Workbooks(Fichier_Réceptions).Sheets(1)
Set C = .Cells.Find(what:=Cherche, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, MatchCase:úlse, SearchFormat:úlse)
If Not C Is Nothing Then
FirstAddress = C.Address
Qté_Reçue = C.Offset(0, -2)
End If
Do
Set C = .Cells.FindNext(C)
LastAddress = C.Address
Loop While Not C Is Nothing And LastAddress <> FirstAddress
If Not C Is Nothing Then Qté_Reçue = Qté_Reçue + C.Offset(0, -2)
End With
ActiveCell.Offset(0, -4) = Qté_Reçue
'________________________________________________
J'ai essayé un tas de combinaisons différentes...mais rien ne fonctionne !
Merci d'avance de sauver les quelques neurones qui me restent !
ThierryP
Bonjour,
Essaie comme ceci :
'---------------------------------
Sub test12()
Dim A As String, B As String, Adr As String
Dim Trouve As Range, Total As Double
'La macro dans le classeur A
A = ThisWorkbook.Name 'fichier source o͹ sont les valeurs
'dont je veux chercher
'Nom du classeur o͹ je vais chercher
B = Workbooks("Classeur2").Name
With Workbooks(A).Sheets(1) 'Adapter le nom de la feuille
Set Rg = .Range("A1:A10") 'plage source dont je cherche la somme
'pour chacune des cellules.
For Each C In Rg
If C <> "" Then
With Workbooks(B).Sheets(1) 'Adapter le nom de la feuille
With .Cells
Set Trouve = .Find(what:=C, LookIn:=xlFormulas,
LookAt:=xlWhole)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
Total = Total + C.Value
Set Trouve = .FindNext(Trouve)
Loop Until Trouve.Address = Adr
C.Offset(, 1) = Total
Total = 0
End If
End With
End With
End If
Next
End With
End Sub
'---------------------------------
Décidément, ce n'est pas mon jour ..... Je cherche Í faire un calcul de cumul : Depuis la valeur d'une cellule dans un fichier A, je cherche dans un fichier B cette valeur (elle peut s'y trouver plusieurs fois); si elle est trouvée, je mets dans une variable Qté la valeur de la cellule adjacente (.offset(0,1)); puis je cherche l'occurence suivante; si il y en a une, je fais Qté = Qté + .offset(0,1) sinon je récupère la variable Qté. Je bute sur la gestion de find et findnext avec ma somme cumulée. J'ai pondu un truc : '__________________________ Cherche = ActiveCell Qté_Reçue = 0 With Workbooks(Fichier_Réceptions).Sheets(1) Set C = .Cells.Find(what:=Cherche, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, _ SearchDirection:=xlNext, MatchCase:úlse, SearchFormat:úlse) If Not C Is Nothing Then FirstAddress = C.Address Qté_Reçue = C.Offset(0, -2) End If Do Set C = .Cells.FindNext(C) LastAddress = C.Address Loop While Not C Is Nothing And LastAddress <> FirstAddress If Not C Is Nothing Then Qté_Reçue = Qté_Reçue + C.Offset(0, -2) End With ActiveCell.Offset(0, -4) = Qté_Reçue '________________________________________________ J'ai essayé un tas de combinaisons différentes...mais rien ne fonctionne ! Merci d'avance de sauver les quelques neurones qui me restent ! ThierryP
Bonjour, Essaie comme ceci : '--------------------------------- Sub test12() Dim A As String, B As String, Adr As String Dim Trouve As Range, Total As Double 'La macro dans le classeur A A = ThisWorkbook.Name 'fichier source o͹ sont les valeurs 'dont je veux chercher 'Nom du classeur o͹ je vais chercher B = Workbooks("Classeur2").Name With Workbooks(A).Sheets(1) 'Adapter le nom de la feuille Set Rg = .Range("A1:A10") 'plage source dont je cherche la somme 'pour chacune des cellules. For Each C In Rg If C <> "" Then With Workbooks(B).Sheets(1) 'Adapter le nom de la feuille With .Cells Set Trouve = .Find(what:=C, LookIn:=xlFormulas, LookAt:=xlWhole) If Not Trouve Is Nothing Then Adr = Trouve.Address Do Total = Total + C.Value Set Trouve = .FindNext(Trouve) Loop Until Trouve.Address = Adr C.Offset(, 1) = Total Total = 0 End If End With End With End If Next End With End Sub '--------------------------------- MichD
ThierryP
Bonjour Denis, Comme d'habitude, ça roule tout seul !!! Je m'étais perdu entre les do... loop while, until etc.... Encore merci du coup de main :-) ThierryP
Bonjour Denis,
Comme d'habitude, ça roule tout seul !!!
Je m'étais perdu entre les do... loop while, until etc....
Bonjour Denis, Comme d'habitude, ça roule tout seul !!! Je m'étais perdu entre les do... loop while, until etc.... Encore merci du coup de main :-) ThierryP