Macro excel Condition non-respecté
Résolu
afullana
Messages postés
295
Date d'inscription
Statut
Membre
Dernière intervention
-
afullana Messages postés 295 Date d'inscription Statut Membre Dernière intervention -
afullana Messages postés 295 Date d'inscription Statut Membre Dernière intervention -
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???
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???
A voir également:
- Macro excel Condition non-respecté
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
4 réponses
Bonjour,
Ca peut être un problème de format ou d'espace superflu.
Avant toute chose essayez ceci :
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...
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
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
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?
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?
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"
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"