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 :

COndition avec If dans une boucle for


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2017
    Messages : 69
    Par défaut COndition avec If dans une boucle for
    Bonjour à tous,
    je ne parviens pas à terminer cette boucle

    Ligne 36, Erreur "Else sans If"

    J'ai bien regardé qu'il n'y ai pas plus haut un if qui traine. J'ai aussi regardé quel était le formalisme pour une telle boucle.... Est ce que quelqu'un peut me donner un coup de main ?

    Merci !

    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
    For n = 4 To LastLig
    
        'If Range("G" & n) <> "" Then
       ' procA (n)
       ' End If
    
        If Range("H" & n) <> "" And Range("H" & n) <= Range("F" & n) Then
                 
                If Month(Range("F" & n)) = 1 Then JaM = JaM + 1
                 MsgBox (JaM)
                
                 ElseIf Month(Range("F" & n)) = 2 Then FebM = FebM + 1
                 
                 ElseIf Month(Range("F" & n)) = 3 Then MaM = MaM + 1
    
                 ElseIf Month(Range("F" & n)) = 4 Then AvM = AvM + 1
                 
                 ElseIf Month(Range("F" & n)) = 5 Then MayM = MayM + 1
                  
                 ElseIf Month(Range("F" & n)) = 6 Then JuM = JuM + 1
                 
                 ElseIf Month(Range("F" & n)) = 7 Then JuiM = JuiM + 1
                  
                 ElseIf Month(Range("F" & n)) = 8 Then AoM = AoM + 1
                  
                 ElseIf Month(Range("F" & n)) = 9 Then SeM = SeM + 1
                 
                 ElseIf Month(Range("F" & n)) = 10 Then OcM = OcM + 1
                  
                 ElseIf Month(Range("F" & n)) = 11 Then NoM = NoM + 1
                  
                 ElseIf Month(Range("F" & n)) = 12 Then DeM = DeM + 1
                  Else
                  End If
        Else
        End If
    
      '  If Range("H" & n) <> "" And Range("H" & n) > Range("F" & n) Then
       ' procC (n)
       ' End If
     
    Next n

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select case Month(Range("F" & n))
    case 1:msgbox "Janvier"
    cass 2: msgbox "Févier"
    end select

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    dans un tel cas je n'utilise pas une structure If mais plutôt Select Case comme documentée dans l'aide VBA interne …

    Et au lieu d'utiliser une variable spécifique par mois j'utiliserais plutôt une variable tableau dont les indices représentent
    chaque mois et donc pas besoin de structure If ni même Select Case et nécessitant donc une à deux lignes de code !

    ___________________________________________________________________________________________________________
    Je suis Paris, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  4. #4
    Invité
    Invité(e)
    Par défaut
    avec DateSerial on peut incrémenter 1 mois!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DateSerial(2004, 6-2, 14)
    Résultat: "14/04/2004"
    Entre anglais et français je me suis peut-être gouré!
    Dernière modification par Invité ; 03/04/2017 à 18h43.

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonsoir,

    Je pense qu'il serait plus simple d'utiliser un tableau :
    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
     
    Sub Test()
     
        Dim Tbl(1 To 12) As Long
        Dim N As Long
        Dim LastLig As Long
     
        For N = 4 To LastLig
     
            If Range("H" & N) <> "" And Range("H" & N) <= Range("F" & N) Then
     
                Tbl(Month(Range("F" & N))) = Tbl(Month(Range("F" & N))) + 1
     
            End If
     
        Next N
     
        'pour voir le résultat dans la fenêtre d'exécution (Ctrl+G)
        For N = 1 To 12
     
            Debug.Print MonthName(N) & " = " & Tbl(N)
     
        Next N
     
    End Sub

  6. #6
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2017
    Messages : 69
    Par défaut
    Super, merci beaucoup

    j'essaye de l'adapter à mon projet et reviens vous dire ce qu'il en est !

    merci à tous les trois

  7. #7
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2017
    Messages : 69
    Par défaut
    Génial ! ca a fonctionné impeccable

    j'avais essayé d'imbriquer des procédures et je restais focalisé sur mes if

    Merci à tous les trois

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PB avec Update dans une boucle FOR
    Par bagandcass dans le forum PL/SQL
    Réponses: 2
    Dernier message: 25/07/2013, 18h46
  2. [XL-2007] conditions sur i dans une boucle For
    Par pmp87 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/05/2013, 21h31
  3. Appliquer un next sous conditions dans une boucle for
    Par Kibald dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/01/2009, 08h56
  4. Réponses: 2
    Dernier message: 28/08/2006, 18h17
  5. Problème avec une DLL dans une boucle For
    Par BraDim dans le forum Langage
    Réponses: 5
    Dernier message: 20/09/2005, 12h22

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