Traitement de donnees avec une condition if

Fermé
r4944 Messages postés 122 Date d'inscription vendredi 2 octobre 2015 Statut Membre Dernière intervention 3 mars 2017 - 21 oct. 2015 à 19:59
PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 - 21 oct. 2015 à 20:15
Bonjour,
Bonjour,

Bonjour j'ai de la misére a trouver mon erreur ;


ce code nous permet de remplire la colonne AP de chaque ligne par XX suite a une condition

le probléme c'est que j'aurais toujours un XX si la colonne (i,14).value = EA_DPD alors que la colonne AE a une valeur different que
(''Completed - Pool Created/ Complété - Bassin crée'') , on dirait il fait pas le controle sur la deuxieme condition

voici le code :
Sub Decision()


Dim cell As Range

Dim i As Integer

For i = 2 To ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
If CStr(ActiveSheet.Cells(i, 31).Value) = "Completed - Appointment made / Complété - Nomination faite" Then
If CStr(ActiveSheet.Cells(i, 14).Value) = "AEP" _
Or CStr(ActiveSheet.Cells(i, 14).Value) = "CMC_REV" _
Or CStr(ActiveSheet.Cells(i, 14).Value) = "CMC_APT" _
Or CStr(ActiveSheet.Cells(i, 14).Value) = "CS_TPD" _
Or CStr(ActiveSheet.Cells(i, 14).Value) = "DM_ID" Then

ActiveSheet.Cells(i, 42).Value = "XX"
End If


End If


If CStr(ActiveSheet.Cells(i, 31).Value) = "Completed - Pool Created/ Complété - Bassin crée" Then
If CStr(ActiveSheet.Cells(i, 14).Value) = "EA_CPC" _
Or CStr(ActiveSheet.Cells(i, 14).Value) = "EA_DPD" Then

ActiveSheet.Cells(i, 42).Value = "XX"

End If

End If




Next i


End Sub



1 réponse

PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
Modifié par PlacageGranby le 21/10/2015 à 20:25
Bonjour,

Le code semble ok.

Avez-vous faites une trace pas à pas dans l'éditeur VBA ?

Vous cliqué à gauche dans la marge, et un point rouge apparait.
Ensuite, lors de l'exécution du code, excel stop a ce point, et vous avancer ligne par ligne à l'aide de la touche F8.

A chaque IF, vous regarder si Excel entre dans la boucle ou non.
Vous regardez les valeurs et si excel ne fait pas ce qui était prévu, alors vous savez que l'erreur est dans cette ligne.

Autre chose a regarder, lors de la trace pas à pas, vous pouvez survoler le code pour voir le contenu des variable.
Par exemple, que vaut ActiveSheet.Cells(i, 31).Value lors qu'il est comparé dans la condition ?

La programmation, c'est essai - erreur, et la trace pas à pas, c'est l'outil ultime pour trouver les erreurs.

PS. la première condition
Completed - Appointment made / Complété - Nomination faite
vous avez un espace de chaque coté du /
Completed - Pool Created/ Complété - Bassin crée
Vous avez seulement un seul espace.

En faisait la trace pas à pas, vous pouvez voir le contenu de la variable et voir s'il est identique à la chaine de texte, mais quand c'est un espace qui manque, souvent on passe a coté sans le voir. Mais au moins la trace permet de voir qu'il n'entre pas dans la boucle et vous savez qu'il y a quelque chose qui cloche.