Macro excel Condition non-respecté

Résolu
afullana Messages postés 301 Statut Membre -  
afullana Messages postés 301 Statut Membre -
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

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  2. afullana Messages postés 301 Statut Membre 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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Ben oui... tout simplement.
      0
  3. afullana Messages postés 301 Statut Membre 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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
  4. afullana Messages postés 301 Statut Membre 19
     
    ok merci bcp Pijaku, je vais faire sa en debut d'aprem
    0