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 :

Correction de code - boucle [debutant]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 44
    Points : 31
    Points
    31
    Par défaut Correction de code - boucle [debutant]
    Bonjour,

    J'ai me suis inspirer de la F.A.Q. pour le code:

    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
     
     
    Sub dernier_800()
     
     
    Dim i As Integer, y As Integer
     
     
    Sheets("BARRE_LISTING_PIECES").Activate
     
    For i = 40 To 4 Step -1
     
            If Cells(i, 6).Value = "0000" Then
     
               For y = 39 To 4 Step -1
     
                    If Cells(y, 6).Value >= "8000" Then
     
                    MsgBox ("Dernier profil >= à 8000 mm -> PARFAIT")
     
                    Else
                    MsgBox ("Le dernier profil doit être plus grand ou égal à 8000 mm-> RECOMMENCEZ")
                    Exit Sub
     
                    End If
                Next y
          End If
    Next i
     
    End Sub
    Je souhaite:

    vérifier mes valeur de F4 à F39 en partant de la fin.
    Si valeur = 0000 , passer à la ligne précédente.
    Si valeur >= 8000 , msg box + End sub
    Sinon (valeur < 8000) msg box + exit sub

    J'ai dû faire une erreur de syntaxe parce que cela ne fonctionne pas J'ai toujours la msgbox "Le dernier profil doit être plus grand ou égal à 8000 mm-> RECOMMENCEZ"

    Quelqu'un pourrai m'aider à corriger ce code. SVP

    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 665
    Points : 5 803
    Points
    5 803
    Par défaut
    Citation Envoyé par romain8544 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Cells(i, 6).Value = "0000"
    If Cells(y, 6).Value >= "8000"
    Value représente la valeur, "0000" et "8000" sont du texte, il faut je pense enlever les guillemets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Cells(i, 6).Value = 0
    If Cells(y, 6).Value >= 8000

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    ça marche beaucoup mieux. MERCI

    Du coup, ce code de boucle ne fonctionne pas. Il m'affiche les deux MSGBOX.

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 665
    Points : 5 803
    Points
    5 803
    Par défaut
    Il fait ce que tu lui demande, si val= 0 on passe a la ligne suivante, si >=8000 msgbox ok on passe a la ligne suivante, si <8000 msgbox pas ok fin de la macro

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    j'essai avec IF - ELSEIF - ELSE

    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
     
    Sub dernier_800()
     
     
    Dim i As Integer, y As Integer
     
     
    Sheets("BARRE_LISTING_PIECES").Activate
     
    For i = 39 To 1 Step -1
     
            If Cells(i, 6).Value = 0 Then
     
                  For y = 1 To 1
     
                  Next y
     
            ElseIf Cells(i, 6).Value >= 8000 Then
     
                MsgBox ("Dernier profil >= à 8000 mm -> PARFAIT")
     
            Else
     
                MsgBox ("Le dernier profil doit être plus grand ou égal à 8000 mm-> RECOMMENCEZ>>")
     
                Exit Sub
     
     
             End If
     
    Next i
     
    End Sub
    ça à l'air de mieux fonctionner, par contre la boucle se génère 4 fois.

    -> 4 MSGbox qui correspond à mes 4 dernières cellules <>0

  6. #6
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut
    Que cherches tu à savoir exactement?

    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
    Sub dernier_800()
    Dim i As Integer
    With ThisWorkbook.Worksheets("BARRE_LISTING_PIECES")
        For i = 39 To 1 Step -1
            If .Cells(i, 6) <> 0 Then
                If .Cells(i, 6).Value >= 8000 Then
                    MsgBox ("Dernier profil >= à 8000 mm -> PARFAIT")
                    Exit Sub
                Else
                    MsgBox ("Le dernier profil doit être plus grand ou égal à 8000 mm-> RECOMMENCEZ>>")
                    Exit Sub
                 End If
            End If
        Next i
    End With
    End Sub
    le truc c'est que ce sera pas forcément ton dernier profil comme tu le mets dans le msgbox. Je ne vois pas ce que tu cherche à savoir avec ce code.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    Je viens de trouver

    J'avais oublié un EXIT FOR après >=8000

    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
    Sub dernier_800()
     
     
    Dim i As Integer, y As Integer
     
     
    Sheets("BARRE_LISTING_PIECES").Activate
     
    For i = 39 To 1 Step -1
     
            If Cells(i, 6).Value = 0 Then
     
                  For y = 1 To 1
     
                  Next y
     
            Else
     
                If Cells(i, 6).Value < 8000 Then
     
                MsgBox ("Le dernier profil doit être plus grand ou égal à 8000 mm-> RECOMMENCEZ>>")
     
                Exit Sub
     
                Else
     
                MsgBox ("Dernier profil >= à 8000 mm -> PARFAIT")
     
                Exit For
     
                End If
     
             End If
     
    Next i
     
    End Sub

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    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
    Sub dernier_800()
    Dim i As Integer, y As Integer
    With Sheets("BARRE_LISTING_PIECES")
        For i = 39 To 1 Step -1
            Select Case .Cells(i, 6).Value
                Case 0
                     For y = 1 To 1
     
                     Next y
                Case Is < 8000: MsgBox ("Le dernier profil doit être plus grand ou égal à 8000 mm-> RECOMMENCEZ>>"): Exit Sub
                Case Else: MsgBox ("Dernier profil >= à 8000 mm -> PARFAIT"):Exit For
            End Select
        Next i
    End With
    End Sub
    Evites d’aérer ton code ça ne le rend pas plus lisible au contraire!
    Dernière modification par Invité ; 21/12/2016 à 16h45.

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

Discussions similaires

  1. Création objet dynamique dans une boucle. [Correction de code]
    Par Rifton007 dans le forum ActionScript 3
    Réponses: 6
    Dernier message: 04/04/2011, 23h48
  2. Correction du code
    Par punisher999 dans le forum Langage
    Réponses: 8
    Dernier message: 28/01/2007, 21h26
  3. Probleme avec un petit code (je debute)
    Par cladou dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 10/01/2006, 18h56

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