Double condition dans une macro

  • Initiateur de la discussion Initiateur de la discussion Fab117
  • Date de début Date de début

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 !

Fab117

XLDnaute Impliqué
Salut,
Je voudrais que ma macro ne fasse l'action que si 2 conditions sont remplies.
Mais avec mon code, il ne tient compte que de la première.

If Resultat1 <> ResultatAttendu And Resultat2 <> ResultatAttendu Then
Range("D" & i).Select
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
End If

Quelqu'un peut-il me dire l'erreur svp.

Merci d'avance.

Fab
 
Re : Double condition dans une macro

Il y a malgré tout une erreur, car j'ai essayé de rajouter la ligne :

MsgBox "Resultat1" & Resultat1 & "Resultat2" & Resultat2 & "ResultatAttendu" & ResultatAttendu & " ", 0, "Controle"

Et lorsque pour lui les 2 conditions sont remplies, il m'affiche la même valeur pour Resultat2 et ResultatAttendu.

Est-il possible que ce soit un problème de format de cellule ?

Fab
 
Re : Double condition dans une macro

Voila

Sub RappatriementInfo()

Dim FichierSource As Workbook
Dim OngletSource As Worksheet
Dim NumeroProduit, NumeroDeClient, TypeDeClient, NumeroDePlace, Critere, ResultatAttendu, Resultat1, Resultat2
Dim i, j, k

Set FichierSource = ActiveWorkbook
Set OngletSource = ActiveSheet

For i = 2 To 400
FichierSource.Activate
OngletSource.Select
NumeroProduit = Range("A" & i)
NumeroDeClient = Range("C" & i)
If NumeroProduit = Range("A" & i - 1) And NumeroDeClient = Range("C" & i - 1) Then
FichierSource.Activate
OngletSource.Select
If Range("B" & i) <> "" Then
Range("E" & i) = Range("E" & i - 1)
Else
Range("B" & i) = Range("B" & i - 1)
Range("D" & i) = Range("D" & i - 1)
Range("E" & i) = Range("E" & i - 1)
End If
Else
' Recherche des informations manquantes pour les données provenant de la première source
If Range("B" & i) = "" And Range("D" & i) = "" And Range("E" & i) = "" Then
Windows("Base de donnees.xls").Activate
Sheets("Table1").Select
For j = 1 To 800
If Range("AE" & j) = NumeroDeClient Then
TypeDeClient = Range("AF" & j)
NumeroDePlace = Range("L" & j)
Critere = Range("AH" & j)
FichierSource.Activate
OngletSource.Select
Range("B" & i) = TypeDeClient
Range("D" & i) = NumeroDePlace
Range("E" & i) = Critere
j = 800
End If
Next j
End If
' Recherche des informations manquantes pour les données provenant de la deuxième source
If Range("B" & i) <> "" And Range("D" & i) <> "" And Range("E" & i) = "" Then
Windows("Base de donnees.xls").Activate
Sheets("Table1").Select
For k = 1 To 800
If Range("AE" & k) = NumeroDeClient Then
Resultat1 = Range("G" & k)
Resultat2 = Range("L" & k)
Critere = Range("AH" & k)
FichierSource.Activate
OngletSource.Select
ResultatAttendu = Range("D" & i)
Range("E" & i) = Critere
If Resultat1 <> ResultatAttendu And Resultat2 <> ResultatAttendu Then
Range("D" & i).Select
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
End If
k = 800
End If
Next k
End If
If Range("A" & i + 1) = "" Then
i = 400
End If
End If
Next i
End Sub


Fab
 
Re : Double condition dans une macro

Salut Fab,

Je viens de prendre connaissance de ton Post

Après une lecture en diagonale et non approfondie une première remarque
Tu écris :

Dim FichierSource As Workbook
Dim OngletSource As Worksheet
Dim NumeroProduit, NumeroDeClient, TypeDeClient, NumeroDePlace, Critere, ResultatAttendu, Resultat1, Resultat2
Dim i, j, k

tes deux dernières lignes sont incorrectes

il faut écrire :

Dim NumeroProduit As Integer, NumeroDeClient as Integer, TypeDeClient as Integer, NumeroDePlace as Integer, Critere as Integer, ResultatAttendu as Integer, Resultat1 as Integer, Resultat2 as Integer
Dim i as integer, j, as Integer k as Integer

En supposant que tes variables sont toutes du type Integer

Je regarderai la suite après le repas

A bientôt
 
Re : Double condition dans une macro

Merci,

Voila qui est fait.
Ton code me semble complexe ! De nombreuses conditions imbriquées les unes dans les autres, mais n'ayant pas le fichier sous les yeux il m'est difficile de comprendre le pourquoi de toutes ces conditions.

Maintenant pour ton problème je te conseille ceci :

insère la ligne suivante
MsgBox(Resultat1 & " ; " & Resultat2 & " ; " & ResultatAttendu)

entre les lignes :

Range("E" & i) = Critere
If Resultat1 <> ResultatAttendu And Resultat2 <> ResultatAttendu Then

ça te permettra de voir quelles sont les valeurs prises par ces trois paramètres vant de lancer le test de condition et de constater éventuellement qu'il y a un problème lors des affectations de ces paramètres (d'autant plus qu'il me semble que tu travailles sur plusieurs fenêtres)

Je me reconnecterai en fin d'après midi
A tout à l'heure
 
Re : Double condition dans une macro

J'ai fait ce que tu me proposes, mis à part le fait que j'ai mis la Message Box juste après qu'il ai coloré la cellule en rouge.
Et les valeurs qu'il annonce pour Resultat2 et ResultatAttendu sont les mêmes.

Fab
 
Re : Double condition dans une macro

Si ta cellule se colorie enrouge c'est que le "If" est "vrai" donc pris en considération
Cela signifie donc que à la fois Resultat1 <> ResultatAttendu et que Resultat2 <> ResultatAttendu, les deux conditions sont donc vérifiées et le "And" rend ta condition générale vraie, d'où le passage par la ligne de code qui colorie ta cellule

Il y a donc contradiction avec ce que tu me dis puisque Resultat2 = ResultatAttendu selon les valeurs données dans le MsgBox

Sans ton fichier j'en perds mon latin
fais dérouler ton code pas à pas pour essayer de trouver le bug

Les imbrications de 'IF ... THEN ... ELSE" ne me plaisent pas beaucoup
de plus attention aux "sauts" de classeur !

Maintenant l'idéal ce serait que tu m'envoies tes fichiers
 
- 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

Discussions similaires

Réponses
4
Affichages
586
Réponses
5
Affichages
688
Réponses
9
Affichages
884
L
Réponses
9
Affichages
1 K
B
  • Question Question
Microsoft 365 colorer une plage
Réponses
2
Affichages
970
bd.afaf
B
Réponses
4
Affichages
661
M
Réponses
2
Affichages
841
M
Retour