Incrémentation + Conditions + Sommation sous 2 Feuilles Excel

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Franckxxx

XLDnaute Junior
Bonjour à tous!

Je suis actuellement entrain d’apprendre le VBA et je suis bloqué sur une partie d'un macro que je doit faire.

Il s'agit d'une partie comprenant des incrémentations associées à des conditions et des sommations. Je suppose qu'il faut utiliser des commandes du type while, if, for et do mais je suis un peut perdus sur ce type de commandes. Je me suis lancé depuis quelques jours dessus et je n'avance pas beaucoup malgré les exemples d'exercices similaires.

Afin d'organiser mes idées j'ai créé un schéma "assez clair" du type de commande que je souhaite construire. Afin de ne pas écrire un pavé illisible, j'ai joins ce schéma ainsi qu'un exemple du fichier Excel pour illustrer la situation.

Si quelqu’un a une idée comment construire ce code cela me serais d'une grande aide! Je suis conscient que cela fait un assez gros morceau de code mais toutes les parties étant liées je ne sais pas trop par ou commencer. Toutes les solutions, même partielles ou les pistes de réflexion sont les bienvenues!! 🙂

Si vous avez la moindre question de compréhension du schéma n'hésitez pas à me demander! 🙂

Merci à vous!
 

Pièces jointes

Re : Incrémentation + Conditions + Sommation sous 2 Feuilles Excel

Bonjour,

Tout d'abord merci beaucoup Bebere pour ton aide 🙂

Le code à l'air de fonctionner, il manque juste, je crois, une des trois conditions liée à la sortie de l'incrémentation: celle ou Ta>150. Si j'ai bien compris tu obtient Ta grâce à: "tbl1(i, 3) = tbl1(i, 3) + tbl2(j, 2)", mais comment l'utiliser après? Grâce à une autre condition en if?

Par contre je ne comprend pas trop cette ligne: "If Year(tbl2(j, 1)) = Year(tbl1(i, 2)) + 1 Then Exit For 'sort si année tbl2(j, 1) > année tbl1(i, 1)+1", elle sert à la troisième condition Si l'on atteint la fin des dates de la Feuil2 la macro se termine? Year étant une fonction?

Merci encore!! 🙂 🙂
 
Re : Incrémentation + Conditions + Sommation sous 2 Feuilles Excel

Re-Bonjour,

Je me suis servis de ton exemple pour construire mon code sous cette forme:


Sub Macro1()
'
' Macro1 Macro
'


Dim tbl1, tbl2, i As Long, j As Long

Feuil1.Range("C2:J197").ClearContents
tbl1 = Feuil1.Range("A2:J197").Value
tbl2 = Feuil2.Range("A3:B1829").Value

For i = 1 To UBound(tbl1)
For j = 1 To UBound(tbl2)

If tbl1(i, 2) = tbl2(j, 1) Then 'comparaison des dates
tbl1(i, 11) = tbl1(i, 11) + tbl2(j, 2) 'Sommation des AA=Ta


If tbl1(i, 3)>150 'Somme des AA>150
Next i
End if

If tbl2(j,1) = tbl1(i+2,2)
tbl1(i, 10) = tbl1(i, 10) & "x" 'Cochage en x de la case associée à la panne n
tbl1(i+1, 10) = tbl1(i+1, 10) & "x" 'Cochage en x de la case associée à la panne n+1
tbl1(i+2, 10) = tbl1(i+2, 10) & "x" 'Cochage en x de la case associée à la panne n+2
Next i
End If

Next j
Next i

Feuil1.Range("A2").Resize(UBound(tbl1, 1), UBound(tbl1, 2)) = tbl1

End Sub


J'ai l'impression que cela correspond au chemin que je souhaite effectuer mais il persiste plusieurs problèmes:
Au niveau des "Next i", ils requiert un For et je ne comprend pas à quel niveau.
Si l'on atteint le "Next i
Next j"
cela peut il être considéré comme la troisième condition? A savoir que l'on a atteint le dernier i et ensuite le dernier j? Et donc la fin de la macro?

Merci encore 🙂
 
Re : Incrémentation + Conditions + Sommation sous 2 Feuilles Excel

bonjour Franck
regarde dans le code les commentaires
ajout de macrofranck,celle que tu as mise
juste pour lecture

edit:changer la ligne colorée en jaune
peut être ce que tu veux
Code:
Public Sub panne()
Dim tbl1, tbl2, i As Long, j As Long

Feuil1.Range("C2:J197").ClearContents
tbl1 = Feuil1.Range("A2:J197").Value
tbl2 = Feuil2.Range("A3:B1829").Value

For i = 1 To UBound(tbl1) '1ère boucle
For j = 1 To UBound(tbl2) '2ème boucle
[COLOR="#FFFF00"]If tbl2(j, 1) >= tbl1(i, 2) Then[/COLOR] 'si  les dates correspondent exécutent les lignes commentées(en vert) ta et rd
tbl1(i, 3) = tbl1(i, 3) + tbl2(j, 2) 'ta
tbl1(i, 10) = tbl1(i, 10) & "x" 'rd
End If
If tbl1(i, 3) > 150 Then
'que faut il faire
End If
If Year(tbl2(j, 1)) = Year(tbl1(i, 2)) + 1 Then Exit For 'sort de la boucle J si année tbl2(j, 1) > année tbl1(i, 1)+1
Next j
Next i

 Feuil1.Range("A2").Resize(UBound(tbl1, 1), UBound(tbl1, 2)) = tbl1
 
End Sub
 

Pièces jointes

Dernière édition:
Re : Incrémentation + Conditions + Sommation sous 2 Feuilles Excel

Franck la variable i est celle de la 1ère boucle,j celle de la 2ème boucle
tu ne peux pas l'incrémenter dans la boucle,il faut employer une autre variable
exit if n'existe pas ,exit for existe
tu es sûr qu'il faut comparer les dates(tu n'auras qu'une comparaison valable,feuil2 n'a pas de dates en doublon)
comparer le mois et l'année serait peut être une solution pour >150
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour