Copie conditionnelle / somme conditionnelle (vba)
Fermé
Raf_la_menaf'
Messages postés
11
Date d'inscription
mercredi 19 février 2014
Statut
Membre
Dernière intervention
4 avril 2014
-
28 févr. 2014 à 16:41
Raf_la_menaf' Messages postés 11 Date d'inscription mercredi 19 février 2014 Statut Membre Dernière intervention 4 avril 2014 - 28 févr. 2014 à 18:29
Raf_la_menaf' Messages postés 11 Date d'inscription mercredi 19 février 2014 Statut Membre Dernière intervention 4 avril 2014 - 28 févr. 2014 à 18:29
A voir également:
- Copie conditionnelle / somme conditionnelle (vba)
- Mise en forme conditionnelle excel - Guide
- Lien copie - Forum Android
- Somme si couleur - Guide
- Copie cachée - Guide
- Erreur 1004 vba ✓ - Forum VB / VBA
2 réponses
Raf_la_menaf'
Messages postés
11
Date d'inscription
mercredi 19 février 2014
Statut
Membre
Dernière intervention
4 avril 2014
28 févr. 2014 à 16:44
28 févr. 2014 à 16:44
Je précise que j'ai recherché un petit peu sur différents forum mais je n'ai pas trouvé de réponse.
Si toutefois un tel topic existe, merci de me le signaler.
A +
Si toutefois un tel topic existe, merci de me le signaler.
A +
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 199
28 févr. 2014 à 16:55
28 févr. 2014 à 16:55
Bonjour,
Pas sûr qu'Excel soit ce qu'il faut pour faire ça.
Si on admet qu'une seule référence est louée par jour, sur 50 semaines, ça va faire 250 lignes, pour faire le total généré par article uniquement, ça fait quelques 12500 tests !!!
Pas sûr qu'Excel soit ce qu'il faut pour faire ça.
Si on admet qu'une seule référence est louée par jour, sur 50 semaines, ça va faire 250 lignes, pour faire le total généré par article uniquement, ça fait quelques 12500 tests !!!
Raf_la_menaf'
Messages postés
11
Date d'inscription
mercredi 19 février 2014
Statut
Membre
Dernière intervention
4 avril 2014
28 févr. 2014 à 17:00
28 févr. 2014 à 17:00
Polux,
Oui je comprends bien...
Dans mon cas, un appareil est loué au minimum pour un mois, il ne peut donc être loué au maximum que 12 fois par an.
C'est possible du coup avec excel ? :-p
Oui je comprends bien...
Dans mon cas, un appareil est loué au minimum pour un mois, il ne peut donc être loué au maximum que 12 fois par an.
C'est possible du coup avec excel ? :-p
Raf_la_menaf'
Messages postés
11
Date d'inscription
mercredi 19 février 2014
Statut
Membre
Dernière intervention
4 avril 2014
Modifié par Raf_la_menaf' le 28/02/2014 à 17:14
Modifié par Raf_la_menaf' le 28/02/2014 à 17:14
Pour info, voila le bout de code que j'avais tapé (pour Dernière_date_retour) :
Sub Derniere_date()
For i = 2 To 51
For k = 2 To 1000
If Worksheets("feuille1").Cells(k, 2).Value = Worksheets("feuille2").Cells(i, 1).Value Then
Dim today As Date
today = Date
If Application.WorksheetFunction.Max(Worksheets("feuille1").Cells(k, 3).Value) >= today Then
Worksheets("feuille2").Cells(i, 2).Value = Application.WorksheetFunction.Max(Worksheets("Fiche de suivi Client").Cells(k, 3).Value)
Else
Worksheets("feuille2").Cells(i, 2).Value = ""
End If
End If
Next
Next
End Sub
Mais ça me donne uniquement la date de la dernière ligne où a été trouvé le numéro de série
Sub Derniere_date()
For i = 2 To 51
For k = 2 To 1000
If Worksheets("feuille1").Cells(k, 2).Value = Worksheets("feuille2").Cells(i, 1).Value Then
Dim today As Date
today = Date
If Application.WorksheetFunction.Max(Worksheets("feuille1").Cells(k, 3).Value) >= today Then
Worksheets("feuille2").Cells(i, 2).Value = Application.WorksheetFunction.Max(Worksheets("Fiche de suivi Client").Cells(k, 3).Value)
Else
Worksheets("feuille2").Cells(i, 2).Value = ""
End If
End If
Next
Next
End Sub
Mais ça me donne uniquement la date de la dernière ligne où a été trouvé le numéro de série
Raf_la_menaf'
Messages postés
11
Date d'inscription
mercredi 19 février 2014
Statut
Membre
Dernière intervention
4 avril 2014
28 févr. 2014 à 17:14
28 févr. 2014 à 17:14
Après, a priori, le tableau de la feuille1 s'incrémente au fur et à mesure de l'année donc la dernière ligne où a été trouvé le numéro de série doit correspondre à la dernière date ; s'il existe une formule plus simple je prends mais sinon la mienne me convient (c'était juste pour pour que ça fasse plus propre).
Le plus embêtant c'est pour la somme du CA, car si ça me donne uniquement le tarif de la dernière ligne où a été trouvé le numéro de série je n'ai pas la somme que je recherche...
Pour info, la bout de code était :
Sub CA()
For i = 2 To 51
For k = 2 To 1000
If Worksheets("feuille1").Cells(k, 2).Value = Worksheets("feuille2").Cells(i, 1).Value Then
Worksheets("feuille2").Cells(i, 4).Value = Application.WorksheetFunction.Sum(Worksheets("Fiche de suivi Client").Cells(k, 4).Value)
End If
Next
Next
End Sub
Le plus embêtant c'est pour la somme du CA, car si ça me donne uniquement le tarif de la dernière ligne où a été trouvé le numéro de série je n'ai pas la somme que je recherche...
Pour info, la bout de code était :
Sub CA()
For i = 2 To 51
For k = 2 To 1000
If Worksheets("feuille1").Cells(k, 2).Value = Worksheets("feuille2").Cells(i, 1).Value Then
Worksheets("feuille2").Cells(i, 4).Value = Application.WorksheetFunction.Sum(Worksheets("Fiche de suivi Client").Cells(k, 4).Value)
End If
Next
Next
End Sub
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 199
28 févr. 2014 à 17:33
28 févr. 2014 à 17:33
Pour la date de retour effectivement, si c'est par ordre chrono, tu auras toujours la dernière date. Pas la peine de faire une usine à gaz pour ça.
Au lieu de parcourir 1000 lignes alors qu'il ne peut en avoir que 250, c'est pas top.
Tu peux déclarer une variable derLig et t'en servir comme limite pour le For Next
Pour le CA:
Prend une variable pour faire le cumul.
Au lieu de parcourir 1000 lignes alors qu'il ne peut en avoir que 250, c'est pas top.
Tu peux déclarer une variable derLig et t'en servir comme limite pour le For Next
Dim Derlig As Long Derlig = Worksheets("feuille1").Range("A1").End(xlDown).Row
Pour le CA:
Prend une variable pour faire le cumul.
Dim CA As Double For i = 2 To 51 CA = 0 For k = 2 To Derlig If Worksheets("feuille1").Cells(k, 2).Value = Worksheets("feuille2").Cells(i, 1).Value Then CA = CA + CDble(Worksheets("feuille1").Cells(k, 2).Value) End If Worksheets("feuille2").Cells(i, 4).Value = CA Next k Next i
Raf_la_menaf'
Messages postés
11
Date d'inscription
mercredi 19 février 2014
Statut
Membre
Dernière intervention
4 avril 2014
28 févr. 2014 à 18:05
28 févr. 2014 à 18:05
Merci Polux =)
Pour la dernière date c'est magique, ça prend en compte la plus grande date même si ce n'est pas la dernière !
Par contre quand je compile le cumul j'ai une erreur :
"Sub ou Function non définie" et ça me surligne le CDble
J'en est déduit qu'il y avait un "e" en trop, mais quand j'execute la macro il y a une nouvelle erreur :
"erreur d'execution '13': incompatibilité de type"
J'ai essayer de remplacer : CA = CA + CDbl(Worksheets("feuille1").Cells(k, 2).Value)
par
CA = CA + CDble(Worksheets("feuille1").Cells(k, 4).Value)
(C'est le CA que je somme, pas le numéro de série, j'ai bon ?)
Mais du coup, ça me donne encore la dernière ligne et pas le cumul du CA...
Désolé de t'embêter encore un peu =)
Merci encore pour le temps que je t'accapare
Pour la dernière date c'est magique, ça prend en compte la plus grande date même si ce n'est pas la dernière !
Par contre quand je compile le cumul j'ai une erreur :
"Sub ou Function non définie" et ça me surligne le CDble
J'en est déduit qu'il y avait un "e" en trop, mais quand j'execute la macro il y a une nouvelle erreur :
"erreur d'execution '13': incompatibilité de type"
J'ai essayer de remplacer : CA = CA + CDbl(Worksheets("feuille1").Cells(k, 2).Value)
par
CA = CA + CDble(Worksheets("feuille1").Cells(k, 4).Value)
(C'est le CA que je somme, pas le numéro de série, j'ai bon ?)
Mais du coup, ça me donne encore la dernière ligne et pas le cumul du CA...
Désolé de t'embêter encore un peu =)
Merci encore pour le temps que je t'accapare