VIVEZ LE
FOOTBALL !

Posez votre question Signaler

Macro excel Condition non-respecté [Résolu]

afullana 284Messages postés 11 février 2010Date d'inscription 20 mars 2012Dernière intervention - Dernière réponse le 8 avril 2010 à 11:53
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???
Lire la suite 

Macro excel Condition non-respecté »

6 réponses
Réponse
+0
moins plus
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...

Ajouter un commentaire
Réponse
+0
moins plus
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
pijaku- 8 avril 2010 à 09:27
Ben oui... tout simplement.
Ajouter un commentaire
Réponse
+0
moins plus
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?
pijaku- 8 avril 2010 à 10:08
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"
Ajouter un commentaire
Réponse
+0
moins plus
ok merci bcp Pijaku, je vais faire sa en debut d'aprem
Ajouter un commentaire
Ce document intitulé « Macro excel Condition non-respecté » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?