Macro Renvoi somme.si dans un autre classeur

olive323

XLDnaute Occasionnel
Bonjour,

J'aurais SVP besoin d'aide si possible.
Je voudrais faire une macro somme.si "dans le classeur1 feuil1" et renvoyer la valeur du resultat "vers le classeur2 feuil5" en colonne D derniere cellule vide

exemple

=SOMME.SI(B2:B11;"boba4";D2:D11)= 528 à renvoyer dans le classeur 2 en derniere ligne vide de la colonne D

Merci pour aide

Olivier
 

Pièces jointes

  • Classeur1.xlsm
    8.8 KB · Affichages: 52
  • Classeur2.xlsm
    8.1 KB · Affichages: 48
  • Classeur1.xlsm
    8.8 KB · Affichages: 43
  • Classeur2.xlsm
    8.1 KB · Affichages: 49
Dernière édition:

olive323

XLDnaute Occasionnel
Re : Macro Renvoi somme.si dans un autre classeur

Bonsoir

Merci

Je comprends un peu quand même :p

la traduction est elle bonne?

Sub cumul()
If [A3] = "" Then Exit Sub 'si A3 est egal a rien je fais rien
Set ShR = ActiveWorkbook.Sheets("R") 'SHR = a feuille R
Set liste = CreateObject("scripting.dictionary")???
cible = Application.Match([A3], [B:B], 0) cible =je determine la plage
If IsError(cible) Then MsgBox "Date inconnue": Exit Sub si je trouve pas la date j ouvre une box
For lig = 2 To ShR.Cells(Rows.Count, 1).End(xlUp).Row lig= de la 2 ème ligne jusqu'a la derniere non vide
If ShR.Cells(lig, 4) = "bob" And ShR.Cells(lig, 3) = [A3] Then liste(ShR.Cells(lig, 3).Value) = liste(ShR.Cells(lig, 3).Value) + ShR.Cells(lig, 2)' si lig colonne 4 est = bob ect...
Next lig
Cells(cible, 3) = liste.Item([A3].Value) comprends pas liste item
End Sub
 

olive323

XLDnaute Occasionnel
Re : Macro Renvoi somme.si dans un autre classeur

Bonjour,

Ok je vais regarder.merci

Une autre petite question, il y a t-il une possibilité d'exécuter une macro en automatique à une heure fixe tous les jours?

Je voudrais qu'il y ai un temps entre l’exécution de chaque macro

Sub Workbook_Open()
Dim variable As Date
Dim variable2 As String
variable = Sheets("STATS").Range("A2").Value
variable2 = Format(Now, "yyyy-mm-dd")
If variable = variable2 Then
If Format(Now, "hh:mm:ss") < "18:05:00" Then
Call cumul
Call cumul1
Else
Application.OnTime TimeValue("18:05:00"), "cumul"
Application.OnTime TimeValue("18:05:00"), "cumul1"
End If
Else
Exit Sub
End If

End Sub
 
Dernière édition:

olive323

XLDnaute Occasionnel
Re : Macro Renvoi somme.si dans un autre classeur

Finalement c'etait plutot simple

Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("00:01:00"), "cumul" déclenchement de la macro cumul 1 minutes après l'ouverture du fichier
Application.OnTime Now + TimeValue("00:01:30"), "cumul1"
End Sub

Merci beaucoup à Modeste et JB pour votre Aide:)
 

olive323

XLDnaute Occasionnel
Re : Macro Renvoi somme.si dans un autre classeur

Bonjour,

J'essai de prendre en compte les bob et les boba4 mais quand j'utilise le And, çà ne me renvoi rien???

If ShR.Cells(lig, 4) = "bob" And ShR.Cells(lig, 4) = "boba4" and ShR.Cells(lig, 3) = [A3] Then liste(ShR.Cells(lig, 3).Value) = liste(ShR.Cells(lig, 3).Value) + ShR.Cells(lig, 2)



Sub cumul()
If [A3] = "" Then Exit Sub
Set ShR = ActiveWorkbook.Sheets("R")
Set liste = CreateObject("scripting.dictionary")
cible = Application.Match([A3], [B:B], 0)
If IsError(cible) Then MsgBox "Date inconnue": Exit Sub
For lig = 2 To ShR.Cells(Rows.Count, 1).End(xlUp).Row
If ShR.Cells(lig, 4) = "bob" And ShR.Cells(lig, 3) = [A3] Then liste(ShR.Cells(lig, 3).Value) = liste(ShR.Cells(lig, 3).Value) + ShR.Cells(lig, 2)
Next lig
Cells(cible, 3) = liste.Item([A3].Value)
End Sub
 

Modeste

XLDnaute Barbatruc
Re : Macro Renvoi somme.si dans un autre classeur

Bonjour,

Décidément, tu n'en démords pas de cette volonté d'utiliser une macro! J'avais déjà évoqué les formules, je pourrais recommander aussi aujourd'hui un filtre avancé ... mais je sens que tu aurais encore un argument imparable :)

Ce qui est sûr, c'est que If ShR.Cells(lig, 4) = "bob" And ShR.Cells(lig, 4) = "boba4" ... ne saurait fonctionner :eek: Comment la même cellule pourrait-elle contenir à la fois "bob" et "boba4" :confused:
 

olive323

XLDnaute Occasionnel
Re : Macro Renvoi somme.si dans un autre classeur

Bonsoir,

Oui toujours en macro!!! pas possible d'utiliser une formule avec liaison mon fichier source est écrasé tous les jours.
De plus mon fichier est enregistré pour différente personne sur leur bureau. Ça va être un vrai bazar en formule.

Il faut que j'utilise range ? case? Do
 

tototiti2008

XLDnaute Barbatruc
Re : Macro Renvoi somme.si dans un autre classeur

Bonsoir olive, Môoôôôoossieur Modeste,

Il faut que j'utilise range ? case? Do

"Or" je dirais, mais pas sûr d'avoir tout suivi

If (ShR.Cells(lig, 4) = "bob" Or ShR.Cells(lig, 4) = "boba4") and ShR.Cells(lig, 3) = [A3] Then liste(ShR.Cells(lig, 3).Value) = liste(ShR.Cells(lig, 3).Value) + ShR.Cells(lig, 2)
 

olive323

XLDnaute Occasionnel
Re : Macro Renvoi somme.si dans un autre classeur

Bonsoir olive, Môoôôôoossieur Modeste,



"Or" je dirais, mais pas sûr d'avoir tout suivi

Bonjour,

Merci

J'avais essayé le Or mais sans la paranthese après "boba4".

If (ShR.Cells(lig, 4) = "bob" Or ShR.Cells(lig, 4) = "boba4") and ShR.Cells(lig, 3) = [A3] Then liste(ShR.Cells(lig, 3).Value) = liste(ShR.Cells(lig, 3).Value) + ShR.Cells(lig, 2)
 

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 896
Membres
103 404
dernier inscrit
sultan87