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 :

Exécuter la suite de l' équation après avoir utilisé exit sub [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 21
    Par défaut Exécuter la suite de l' équation après avoir utilisé exit sub
    Bonjour voila mon problème ,j'aimerais exécuter les codes derrière un bouton que j'ai créer dans un userforme . j'ai poser des conditions qui lorsqu'ils ne sont pas vérifier l'exécution doit s’arrêter ,mais le problème est que si les conditions sont respectées la suite du code ne s'execute plus.
    voici le code en question . 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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Private Sub Enrgstr_Click()
     
    If Qtité_cmde.Value = "" Then MsgBox ("veuillez entré unne quantité")
    Exit Sub
        If prix_achat.Value = "" Then MsgBox ("veuillez entré le prix d'achat")
    Exit Sub
     
     
    'enrégistrement des produits comandées
    For i = 1 To Derline(1, 1)
    If (Nom_prdt.Value = Sheets("PRODUIT").Cells(i + 1, 1)) Then
    Sheets("PRODUIT").Cells(i + 1, 4) = Sheets("PRODUIT").Cells(i + 1, 4) + Qtité_cmde.Value
        End If
     
    Next i
    If (flag = False) Then
     
        Rows("2:2").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Sheets("PRODUIT").Cells(2, 1) = Nom_prdt.Value
    Sheets("PRODUIT").Cells(2, 2) = Type_prdt.Value
    Sheets("PRODUIT").Cells(2, 3) = code_prdt.Value
    Sheets("PRODUIT").Cells(2, 4) = Qtité_cmde.Value
    Sheets("PRODUIT").Cells(2, 6) = prix_achat.Value
    Sheets("PRODUIT").Cells(2, 8) = Dat_achat.Value
    Sheets("PRODUIT").Cells(2, 9) = Dat_premp.Value
    Sheets("PRODUIT").Cells(2, 10) = Nom_grosis.Value
    Sheets("PRODUIT").Cells(2, 11) = Adres_gross.Value
     
    End If
     
    Nom_prdt.Value = ""
    Type_prdt.Value = ""
    code_prdt.Value = ""
    Qtité_cmde.Value = ""
    prix_achat.Value = ""
    Dat_achat.Value = ""
    Dat_premp.Value = ""
    Nom_grosis.Value = ""
    Adres_gross.Value = ""
     
    Rows("2:2").Select
        With Selection.Font
            .Name = "Calibri"
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With
        Selection.Font.Bold = False
        Selection.Font.Italic = False
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Lorsque l'on écrit (exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if toto = 10 then titi = "coucou"
    tata = "voilà"
    seule la valeur de titi est subordonnée à celle de toto
    tata n'est pas dans l'expression conditionnelle et prend donc systématiquement la valeur "voilà".

    (B.A.BA, quand même !!! ...)

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 21
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour
    Lorsque l'on écrit (exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if toto = 10 then titi = "coucou"
    tata = "voilà"
    seule la valeur de titi est subordonnée à celle de toto
    tata n'est pas dans l'expression conditionnelle et prend donc systématiquement la valeur "voilà".

    (B.A.BA, quand même !!! ...)
    merci

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Tu dois refermer tes blocs if... Car comme tu l'écris là, le premier Exit Sub est toujours exécuté.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If Qtité_cmde.Value = "" Then
        MsgBox ("veuillez entré unne quantité")
        Exit Sub
    End If
    If prix_achat.Value = "" Then
        MsgBox ("veuillez entré le prix d'achat")
        Exit Sub
    End If
    Cela étant dit, personnellement, je n'aime pas du tout les EXIT SUB...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 21
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut.

    Tu dois refermer tes blocs if... Car comme tu l'écris là, le premier Exit Sub est toujours exécuté.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If Qtité_cmde.Value = "" Then
        MsgBox ("veuillez entré unne quantité")
        Exit Sub
    End If
    If prix_achat.Value = "" Then
        MsgBox ("veuillez entré le prix d'achat")
        Exit Sub
    End If
    Cela étant dit, personnellement, je n'aime pas du tout les EXIT SUB...
    merci ca ma beaucoup aider

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Cela dit, je n'aime pas mettre les tests de validation dans le code du bouton. Je préfère déléguer cette tâche à une fonction dont l'unique responsabilité est de tester la saisie.

    Tu pourrais avoir un code du genre:
    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
    Private Sub btnValidate_Click()
      Dim chk As String
     
      chk = CheckDatas()
      If chk = "" Then
        ...
        ...
      Else
        MsgBox chk
      End If
    End Sub
     
    Function CheckDatas() As String
      Dim chk As Integer
     
      If quantité.Value = "" Then chk = "Qté manquante"
      If prix.Value = "" Then chk = chk & vbCrLf & "Prix manquant"
     
      CheckDatas = chk
    End Function
    C'est à mon avis plus lisible et plus maintenable, et cela respecte un grand principe de programmation: la fonction à responsabilité unique.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Dans le même esprit, j'ai proposé un code pour qualifié les champs obligatoire!

    Tu peux même si tu le souhaite définir si le contrôle contient du texte une date ou un numérique!

    https://www.developpez.net/forums/d1...a/#post7352588

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    La stratégie "universelle" n'existe pas
    Un "champ" peut, selon le cas :
    - être obligatoire purement et simplement
    - n'être obligatoire que si ceci ou cela mais (si ni ceci ni cela) :
    ------- être quand même "remplissable"
    ou
    ------- ne pas alors être "remplissable"

    etc ... etc ... (les combinaisons peuvent être très nombreuses)

    Très souvent, le développeur jouera parallèlement avec les propriétés enabled, visible, tabstop et les setffocus


    Utiliser la propriété tag peut être une bonne idée, mais elle prive de l'utilisation de cette propriété à d'autres fins éventuelles

    L'utilisation d'arrays n'est pas rare

    Il n'est pas toujours indispensable de préciser le champ fautif dans un message d'avertissement. Il suffit par exemple, lorsqu'il s'agit d'une zone d'édition, de dire qu'il s'agit du champ auquel on donne le focus, sans nécessité d'en préciser le nom.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour unparia,
    Oui ,mais il m'es arrivé de faire un csv ";" dans le tag pour dire si a=true b obligatoire !

    Les règles d nommages sont là pour faire de distingo!

  10. #10
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour dysorthographie

    Oui ,mais il m'es arrivé de faire un csv ";" dans le tag
    cela m'est également arrivé (il y a quelques années ...), mais avec un séparateur autre (le caractère de code 1)
    J'ai laissé tomber cette stratégie (elle ralentit, la "chaîne" ainsi stockée est limitée, etc ...)

    Amitiés.

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

Discussions similaires

  1. Bug suite après avoir renommer les onglets du classeur
    Par Tournament dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/07/2015, 12h20
  2. Réponses: 5
    Dernier message: 12/07/2015, 12h37
  3. fichiers de données après avoir utilisé wdmodfic
    Par wd_newbie dans le forum WinDev
    Réponses: 0
    Dernier message: 04/08/2013, 09h43
  4. derniere fonction exécuté apres avoir stopper le debogage
    Par WELCOMSMAIL dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/05/2008, 16h19
  5. [Wamp] Débutter après avoir utilisé J2EE
    Par FCDB dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 04/04/2006, 09h38

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