IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

problème boucle for


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2008
    Messages : 61
    Par défaut problème boucle for
    Bonjour,
    J'ai écrit un code qui permet de comparer deux cellules entre elles, dans diverses combinaisons.
    Tout marchait bien sur ma feuille de test mais lorsque je le fais sur une autre feuille de test, j'ai un message d'erreur car ensuite je récupère ces données mais j'obtiens des "0" , après vérification aucun des if n'a de conditions vraies alors qu'en principe si ! j'ai placé des msgbox dans les "if" et ils ne se lancent pas.
    Sur une feuille de mes feuilles cela fonctionne pas sur l'autre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    For boucle = 2 To derniere_cellule
    If ActiveWorkbook.Worksheets(annee_traitement).Range("h" & boucle).Value = "favorable" Then
    sgr_favorable = sgr_favorable + 1
    End If
    If ActiveWorkbook.Worksheets(annee_traitement).Range("h" & boucle).Value = "défavorable" Then
    sgr_nofavorable = sgr_nofavorable + 1
    End If
    If ActiveWorkbook.Worksheets(annee_traitement).Range("h" & boucle).Value = "favorable" Then
    compteur_favorable = 1
    Else
    compteur_favorable = 2
    End If
    If ActiveWorkbook.Worksheets(annee_traitement).Range("l" & boucle).Value = "autorisée" Then
    compteur_autorisee = 1
    Else
    compteur_autorisee = 3
    End If
    If compteur_favorable = compteur_autorisee Then
    suivi = suivi + 1
    End If
    If ActiveWorkbook.Worksheets(annee_traitement).Range("h" & boucle).Value = "favorable" Then
    compteur_favorable2 = 1
    Else
    compteur_favorable2 = 2
    End If
    If ActiveWorkbook.Worksheets(annee_traitement).Range("l" & boucle).Value = "non autorisée" Then
    compteur_autorisee2 = 1
    Else
    compteur_autorisee2 = 3
    End If
    If compteur_favorable2 = compteur_autorisee2 Then
    nosuivi = nosuivi + 1
    End If
    If ActiveWorkbook.Worksheets(annee_traitement).Range("h" & boucle).Value = "défavorable" Then
    compteur_defavorable = 1
    Else
    compteur_defavorable = 2
    End If
    If ActiveWorkbook.Worksheets(annee_traitement).Range("l" & boucle).Value = "non autorisée" Then
    compteur_noautorisee = 1
    Else
    compteur_noautorisee = 3
    End If
    If compteur_defavorable = compteur_noautorisee Then
    suivi2 = suivi2 + 1
    End If
    If ActiveWorkbook.Worksheets(annee_traitement).Range("h" & boucle).Value = "défavorable" Then
    compteur_defavorable2 = 1
    Else
    compteur_defavorable2 = 2
    End If
    If ActiveWorkbook.Worksheets(annee_traitement).Range("l" & boucle).Value = "autorisée" Then
    compteur_noautorisee2 = 1
    Else
    compteur_noautorisee2 = 3
    End If
    If compteur_defavorable2 = compteur_noautorisee2 Then
    nosuivi2 = nosuivi2 + 1
    End If
    Next boucle

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2008
    Messages : 61
    Par défaut
    je viens de trouver les données sont un export et il ne les reconnait pas comme du texte

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut stmastma et le forum
    Je ne sais pas de quoi on parle, mais ta macro pourrait sans doute être optimisée facilement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    If ActiveWorkbook.Worksheets(annee_traitement).Range("h" & boucle).Value = "favorable" Then
    sgr_favorable = sgr_favorable + 1
    End If
    If ActiveWorkbook.Worksheets(annee_traitement).Range("h" & boucle).Value = "défavorable" Then
    sgr_nofavorable = sgr_nofavorable + 1
    End If
    If ActiveWorkbook.Worksheets(annee_traitement).Range("h" & boucle).Value = "favorable" Then
    compteur_favorable = 1
    Else
    compteur_favorable = 2
    End If
    If ActiveWorkbook.Worksheets(annee_traitement).Range("l" & boucle).Value = "autorisée" Then
    compteur_autorisee = 1
    Else
    compteur_autorisee = 3
    End If
    If compteur_favorable = compteur_autorisee Then
    suivi = suivi + 1
    End If
    If ActiveWorkbook.Worksheets(annee_traitement).Range("h" & boucle).Value = "favorable" Then
    compteur_favorable2 = 1
    Else
    compteur_favorable2 = 2
    End If
    If ActiveWorkbook.Worksheets(annee_traitement).Range("l" & boucle).Value = "non autorisée" Then
    compteur_autorisee2 = 1
    Else
    compteur_autorisee2 = 3
    End If
    If compteur_favorable2 = compteur_autorisee2 Then
    nosuivi = nosuivi + 1
    End If
    Toi t'arrives peut-être à t'y retouver dans ce style de code, mais pour moi, c'est trop abscon!
    Le même code, mais vu différemment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    With ActiveWorkbook.Worksheets(annee_traitement)
        compteur_favorable = 2
        compteur_favorable2 = 2
        If .Range("h" & boucle) = "favorable" Then
            sgr_favorable = sgr_favorable + 1
            compteur_favorable = 1
            compteur_favorable2 = 1
        ElseIf .Range("h" & boucle) = "défavorable" Then
            sgr_nofavorable = sgr_nofavorable + 1
        End If
        If .Range("L" & boucle) = "autorisée" Then
            compteur_autorisee = 1
        Else
            compteur_autorisee = 3
        End If
        If compteur_favorable = compteur_autorisee Then suivi = suivi + 1
     
        If .Range("L" & boucle) = "non autorisée" Then
            compteur_autorisee2 = 1
        Else
            compteur_autorisee2 = 3
        End If
        If compteur_favorable2 = compteur_autorisee2 Then nosuivi = nosuivi + 1
    End With
    Ça me semble déjà plus lisible, mais comme je ne connais rien des données, je ne peux changer le fonctionnement du code, alors que je subodore que la colonne H n'a que deux valeurs possibles Favorable/Défavorable, et dans ce cas, on pourrait encore réduire le code (idem pour L).
    A+

Discussions similaires

  1. Problème boucle for
    Par revsys dans le forum Delphi
    Réponses: 20
    Dernier message: 24/05/2007, 15h50
  2. Problème boucle for
    Par rouliane dans le forum C++
    Réponses: 2
    Dernier message: 14/12/2006, 14h37
  3. [VBA-E, Débutant] Problème Boucle for
    Par strifer dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 24/08/2006, 12h30
  4. [Débutant] Problème boucle for
    Par toniooooo dans le forum Langage
    Réponses: 10
    Dernier message: 18/04/2006, 14h42
  5. [FLASH 8] Problème Boucle For
    Par Begood dans le forum Flash
    Réponses: 6
    Dernier message: 21/03/2006, 11h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo