VBA / condition pour non prise en compte d'une ligne
Bonjour,
J'aimerais comprendre comment rajouter une condition pour ne pas prendre en compte une ligne.
Je souhaiterai dans le code suivant ne pas avoir la prise en compte des lignes contenant la valeur "EV" sans suppression de ses informations pour autant.
Je ne trouve rien à ce sujet.
Aussi j'aimerais comprendre où je dois poser la condition pour qu'elle soit optimisé. J'avais penser à ici.
For iR = 2 To UBound(tabloR, 1) 'On va passer toutes les lignes de la BDD
For jR = 2 To UBound(tabloR, 2) 'et toutes les colonnes
For n = 0 To ListBox1.ListCount - 1 'On va passer tous les items sélectionnés dans la boite de dialogue
If ListBox1.Selected(n) Then
For i = 2 To UBound(tablo, 1)
If tablo(i, 1) = ListBox1.List(n) Then 'condition sur la région
If tabloR(1, jR) = tablo(i, 1) And tabloR(iR, 1) = tablo(i, 7) Then
If tablo(i, 4) = "EV" Then
'code non prise en compte des lignes concernés
If tablo(i, 5) = "Tool" Then
tabloR(iR, jR) = Application.Max(tabloR(iR, jR), tablo(i, 9))
Else
tabloR(iR, jR) = tabloR(iR, jR) + tablo(i, 9)
End If
End If
End If
End If
Next i
End If
Next n
Next jR
Next iRJ'avais aussi essayé avec le code ci dessous pour prendre en compte seulement les valeurs "SYS" mais cela me fait buguer la macro sans faire les calculs demandés.
For Each Rw In Selection.Rows
Ligne = Rw.Row
If Rw.Cells(1, 4).Value = "SYS" ThenQuelqu'un pourrait me sortir de ce mauvais pas ?
Cordialement
Bonjour Starck, bonjour le forum,
Peut-être en remplaçant le début du code :
Private Sub CommandButton1_Click()
dicoV.RemoveAll
For n = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(n) Then
For i = 2 To UBound(tablo, 1)
If Not tablo(i, 4) = "EV" Then '<=== nouvelle condition ici
If tablo(i, 1) = ListBox1.List(n) Then
dicoV(tablo(i, 1)) = "" 'Liste des régions sans doublons
dicoL(tablo(i, 7)) = "" 'Liste des Manu Code sans doublon
End If
End If '<=== fin de la nouvelle condition ici
Next i
End If
Next nBonjour,
J'ai essayé en rajoutant ta condition mais cela ne la prends pas en compte. Les valeurs de calculs ne changent pas..
Re,
J'avoue ne pas avoir analyser complètement ton code mais cela me paraissait une solution viable. Il faut voir plus loin dans le code et imposer la même condition....
Bonjour,
Ca marche ! j'ai trouvé l'endroit ou il faut mettre ce code pour que cela soit pris en compte !
For n = 0 To ListBox1.ListCount - 1 'On va passer tous les items sélectionnés dans la boite de dialogue
If ListBox1.Selected(n) Then
For i = 2 To UBound(tablo, 1)
If tablo(i, 1) = ListBox1.List(n) Then 'condition sur la région
If tabloR(1, jR) = tablo(i, 1) And tabloR(iR, 1) = tablo(i, 7) Then '
If Not tablo(i, 4) = "EV" Then 'nouvelle condition
If tablo(i, 5) = "Tool" Then
tabloR(iR, jR) = Application.Max(tabloR(iR, jR), tablo(i, 9))
Else
tabloR(iR, jR) = tabloR(iR, jR) + tablo(i, 9)
End If
End If
End If
End If
Next i
End If
Next n
Next jREst-il possible par hasard sur la même condition de :
- soit mettre plusieurs critères ou faut il ajouter d'autres conditions similaires ?
- Le modifier légèrement pour qu'il prenne en compte le texte sans prise en compte des majuscules ?
Cordialement