Aide sur une macro de filtre et suppression
Bonjour, je suis étudiante en developpement informatique et notre language de base est C# donc j'ai aucune idée sur le VBA(je suis nul j'y connais riien) . je suis en période de stage mais le probléme est que la société travaille avec le Vb et le Vba, j'ai lu quelques tutoriels et quelques cours et mon encadrant m'a proposé un petit projet c'est le faite de prendre un tableau de commande en cours de réalisation chaque commande passe par plusieurs étapes qui sont numéroté à partir de 10 (exemple de série de numéros d'opérations : 10 ,20 30 40 ...) le but de ce projet est de créer une macro qui teste sur les séries des numéro si il sont enchaîné ( par exemple une série de 10,20,30,40,50 ... c'est bien sinon si on trouve une série de 10,40,50,60 l'opération numéro 10 est déja exécuté mais non confirmé donc on doit la supprimé du tableau
Si dessus un petit code qu j'ai fait mais je craint que c'est totalement faux
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
T=0
For i=9 To 32321
For j=i+1 To 32321
If Range("B"&[i]) = Range ("B"&[j]) Then
T=1
End If
Next j
Next i
If T=1 Then
For k=9 To 32321
For l=k+1 To 32321
If Range("D"&[k]) + 10 < Range("D"&[l]) Then
Range("D"&[k]).EntireRow.Delete
End If
Next l
Next k
End Ifbesoin d'un coup de main svp svp svp
Bonjour.
Gné ?
Bonne journée.
Pour développer, on ne sait pas à quoi correspondent tes variables, on ne sait pas si c'est là l'intégralité de ton code ou non, qu'est-ce que 32321 ? Quel rapport entre tes étapes et ton code ?
En informatique on a aussi dû t'apprendre à indenter le code, c'est plus sympathique
Rebonjour, je suis en première année donc je suis encore débutante et pour mieux clarifier les choses
Dim i As Integer ' i pour la première boucle qui teste sur le numéro d'ordre si il est identique ou non
Dim j As Integer ' j pour la deuxième boucle qui teste sur le numéro d'ordre si il est identique ou non
Dim k As Integer ' k pour la première boucle du teste des séries d'opération si il sont enchaîné ou non
Dim l As Integer ' l pour la deuxième boucle du teste des séries d'opération si il sont enchaîné ou non
T=0 ' une variable booléenne qui se change de 0 à 1 si on a les numéros d'ordres égaux
' Boucle de test d'égalité des numéros d'ordre
For i=9 To 32321 ' nombre de lignes du tableau excel
For j=i+1 To 32321
If Range("B"&[i]) = Range ("B"&[j]) Then
T=1
End If
Next j
Next i
'Boucle de test d'enchainement des series d'opérations
If T=1 Then
For k=9 To 32321
For l=k+1 To 32321
If Range("D"&[k]) + 10 < Range("D"&[l]) Then
' suppréssion de la ligne de l'opération effectué et non enregistré
Range("D"&[k]).EntireRow.Delete
End If
Next l
Next k
End IfDonc tu as le n° de la commande en colonne B et le n° d'ordre en colonne D ?
Vu tes boucles j'imagine que le tableau est trié sur la colonne B puis sur la D, est-ce le cas ?
oui effectivement le tableau et trié en colonnes B et D et la colonne B est la colonne du numéro de l'opération et la colonne D est la colonne de numéro des séries de petites opérations que s'enchainent pour effectuer l'opération
pour infos : je débute le VBA ça fait juste 3j
svp svp svp svp aidez moi
Dim i As Integer ' i pour la première boucle qui teste sur le numéro d'ordre si il est identique ou non
Dim j As Integer ' j pour la deuxième boucle qui teste sur le numéro d'ordre si il est identique ou non
Dim k As Integer ' k pour la première boucle du teste des séries d'opération si il sont enchaîné ou non
Dim l As Integer ' l pour la deuxième boucle du teste des séries d'opération si il sont enchaîné ou non
T=0 ' une variable booléenne qui se change de 0 à 1 si on a les numéros d'ordres égaux
' Boucle de test d'égalité des numéros d'ordre
For i=9 To 32320 ' nombre de lignes du tableau excel
For j=i+1 To 32321
If Cells(i,2) = Cells(j,2) Then
T=1
End If
Next j
Next i
'Boucle de test d'enchainement des series d'opérations
If T=1 Then
For k=9 To 32320
For l=k+1 To 32321
If Cells(k,4) + 10 < Cells(l,4) Then
' suppréssion de la ligne de l'opération effectué et non enregistré
Cells(k,4).EntireRow.Delete
End If
Next l
Next k
End If