Macro excel Condition non-respecté

Résolu/Fermé
Signaler
Messages postés
295
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
8 juin 2012
-
Messages postés
295
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
8 juin 2012
-
Bonjour,
j'ai crée un petit comparateur en macro, et mon probleme est que la comparaison ne fonctionne pas correctement.

Voici la macro:


Sub clear()
Do
If Worksheets("Lot").Range("C9") <> Worksheets("Data").Range("C3") Then

With Sheets("Lot")
.Range("C17:C200").ClearContents
.Range("G26").ClearContents
.Range("F32:G200").ClearContents
End With

With Sheets("Data")
.Range("A4:D200").ClearContents
End With

With Sheets("Data")
.Range("A3").QueryTable.Refresh BackgroundQuery:=False
End With

With Sheets("Lot")
.Range("C17").QueryTable.Refresh BackgroundQuery:=False
.Range("h27").QueryTable.Refresh BackgroundQuery:=False
.Range("F32").QueryTable.Refresh BackgroundQuery:=False
.Range("C9").Select

End With

Else
Attente (1)
End If

Loop
End Sub
--------------------------------------------------------------------------------------------
Sub Attente(seconde As Integer)
Dim Start, PauseTime
PauseTime = seconde
Start = Timer
Do While Timer < Start + PauseTime
DoEvents
Loop

End Sub


---------------------------------------------------------------------------------------------
Mon probleme est dans la 1ere boucle, au niveau du "If", je ne comprend pas pourquoi mon inegalité n'est pas respecté.

Je m'explique: J'ai exactement le meme code W002C022 sur mes cellule C9 ( feuille Lot) et C3 (feuille data ) et pourtant mon programme passe quand meme au "then" au lieu d'aller au "Else"

J'ai remarque que quelque soit la valeur que je met en C9, la condition passe au "then", il n'y a que quand il n'y a rien en C3 que le programme passe au " Else"

Avez vous une idée???

4 réponses

Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 677
Bonjour,
Ca peut être un problème de format ou d'espace superflu.
Avant toute chose essayez ceci :
Sub clear() 
Dim valeur1, valeur2 As String
valeur1 = Worksheets("Lot").Range("C9").Value
valeur2 = Worksheets("Data").Range("C3").Value
Do 
If valeur1 <> valeur2 Then 
With Sheets("Lot") 
.Range("C17:C200").ClearContents 
.Range("G26").ClearContents 
etc etc...

0
Messages postés
295
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
8 juin 2012
19
J'ai trouvé...

En faite j'ai fusionné 6 cellules pour mon Code W002C022 (range:B9;D10) et en prenant C9, cela ne fonctionner pas

Par contre en prenant la 1ere ( B9) cela fonctionne nickel
0
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 677
Ben oui... tout simplement.
0
Messages postés
295
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
8 juin 2012
19
Ehh ui...
En tout cas merci pour ta reponse, etant debutant tu viens de me montrer comment affecter un nom pour une donner sa pourra me servir plus tard...

Sinon, j'ai un probleme different maintenant que cela marche bien lol

Etant donner que ma macro est une boucle infini, elle tourne continuellement sur plusieurs poste au travail.

Mon souci c'est que ma macro utilise 50% de la ressource processeur sur un Core 2 Duo 6550

C'est normal? Est il possible de réduire cette charge CPu?
0
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 677
C'est normal? Ca peut être normal, même si cela fait beaucoup (ENOORRRMME même!!)
Il faudrait certainement améliorer la macro. Pour cela, donne nous tout le code et dis nous sur combien de classeurs, feuilles, lignes et colonnes il s'applique...
Il y a ici bas de très bons programmeurs qui pourront certainement t'aider.
Relance un nouveau sujet intitulé : "ma macro utilise 50% de la ressource processeur"
0
Messages postés
295
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
8 juin 2012
19
ok merci bcp Pijaku, je vais faire sa en debut d'aprem
0