Incrémentation + Conditions + Sommation sous 2 Feuilles Excel

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

  • Exemple.xlsx
    51.3 KB · Affichages: 19
  • Exemple.xlsx
    51.3 KB · Affichages: 28
  • Exemple.xlsx
    51.3 KB · Affichages: 32
  • Nouveau Microsoft Word Document.docx
    46 KB · Affichages: 19
  • Nouveau Microsoft Word Document.docx
    46 KB · Affichages: 22

Bebere

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

bonjour Franck
bienvenue
code en module 1 d'après ce que j'ai compris
 

Pièces jointes

  • ExempleV1.xls
    188 KB · Affichages: 35
  • ExempleV1.xls
    188 KB · Affichages: 34
  • ExempleV1.xls
    188 KB · Affichages: 22

Franckxxx

XLDnaute Junior
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!! :) :)
 

Franckxxx

XLDnaute Junior
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 :)
 

Bebere

XLDnaute Barbatruc
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

  • ExempleV1.xls
    189.5 KB · Affichages: 21
  • ExempleV1.xls
    189.5 KB · Affichages: 28
  • ExempleV1.xls
    189.5 KB · Affichages: 24
Dernière édition:

Franckxxx

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

Bonjour Bebere,

J'ai répondus à tes questions et précisé ce que j'aimerais effectuer directement sur la macro du fichier joint.

Merci énormément pour ton aide,
 

Pièces jointes

  • Copie de ExempleV1-3.xls
    185 KB · Affichages: 20

Bebere

XLDnaute Barbatruc
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
 

Discussions similaires