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

VBA Discussion :

Fonction VBA End if problème


Sujet :

VBA

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 57
    Points : 42
    Points
    42
    Par défaut Fonction VBA End if problème
    Bonjour,

    lorsque j'enregistre les lignes vba ci-dessous, lors de la compilation, il m indique comme erreur "End if pas de bloc end if ???


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CommandButton1_Click()
        Dim L As Integer
     
        If MsgBox("Confirmez-vous l'insertion de ce nouveau Fournisseur ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then L = Sheets("Fournisseurs").Range("a65536").End(xlUp).Row + 1     'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
                Range("A" & L).Value = ComboBox1
                Range("B" & L).Value = ComboBox2
                Range("C" & L).Value = TextBox1
                Range("D" & L).Value = TextBox2
                Range("E" & L).Value = TextBox3
                Range("F" & L).Value = TextBox4
                Range("G" & L).Value = TextBox5
                Range("H" & L).Value = TextBox6
                Range("I" & L).Value = TextBox7
        End If
    Je ne comprend pas pq ??? !!

    Mille merci

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, allons quand même ...

    Déjà Balise ton code
    ensuite utilise et ce n'est pas fini ... car ce code ne fonctionnera toujours pas.

    référence de feuille absente etc ...

    bref tutos et aide en ligne à consulter et assimiler.
    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
    Option Explicit
     
    Private Sub CommandButton1_Click()
    Dim L As Long
     
        If MsgBox("Confirmez-vous l'insertion de ce nouveau Fournisseur ?", vbYesNo, _
                "Demande de confirmation d'ajout") = vbYes Then
            L = Sheets("Fournisseurs").Range("A" & Rows.Count).End(xlUp).Row + 1
            Range("A" & L).Value = ComboBox1
            Range("B" & L).Value = ComboBox2
            Range("C" & L).Value = TextBox1
            Range("D" & L).Value = TextBox2
            Range("E" & L).Value = TextBox3
            Range("F" & L).Value = TextBox4
            Range("G" & L).Value = TextBox5
            Range("H" & L).Value = TextBox6
            Range("I" & L).Value = TextBox7
        End If
     
    End Sub

  3. #3
    Inactif  
    Homme Profil pro
    Analyste-Programmeur / Intégrateur ERP
    Inscrit en
    Mai 2013
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur / Intégrateur ERP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 511
    Points : 10 335
    Points
    10 335
    Par défaut
    Bonjour,

    en plus de tout ce qu'à signalé kiki29, pour apporter une précision à ton problème précisément :


    Lorsque tu écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If a=3 And b=2 Then c=5
    C'est comme si tu écrivais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If a=3 And b=2 then
        c=5
    end if
    C'est juste une syntaxe différente, plus compacte, utile lorsque tu n'as qu'une action à réaliser lors de ton test.


    Du coup dans ton morceau de code en exemple, c'est comme si il était écrit ça (pour simplifier) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CommandButton1_Click()
        Dim L As Integer
     
        If MsgBox("Confirmez-vous l'insertion de ce nouveau Fournisseur ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then L = Sheets("Fournisseurs").Range("a65536").End(xlUp).Row + 1  End If  'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
                Range("A" & L).Value = ComboBox1
                Range("B" & L).Value = ComboBox2
                Range("C" & L).Value = TextBox1
                Range("D" & L).Value = TextBox2
                Range("E" & L).Value = TextBox3
                Range("F" & L).Value = TextBox4
                Range("G" & L).Value = TextBox5
                Range("H" & L).Value = TextBox6
                Range("I" & L).Value = TextBox7
        End If
    Du coup, le 2ème End If est de trop, et n'a donc bien pas de bloc If associé.

    D'ailleurs, si tu enlèves ton End If, tu verras que l'on réponde oui ou non, le code passera bien par l'affectation des valeurs de tes textbox dans tes cellules, et plantera dans le cas du choix non, car ta variable L pour le numéro de ligne, n'aura pas de valeur.


    Lorsque tu as plusieurs actions à effectuer dans ton bloc If, il faut bien faire un retour à la ligne après ton "Then", écrire tes instructions et enfin fermer ton bloc avec un End If.

Discussions similaires

  1. [AC-2010] Problème déclaration fonction VBA 64bits
    Par Tomtomtvn dans le forum VBA Access
    Réponses: 8
    Dernier message: 14/03/2013, 16h50
  2. [XL-2007] Problème avec fonction VBA
    Par BarryLyndon57 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/01/2012, 18h23
  3. problème fonction vba
    Par stochastique dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 06/05/2011, 13h02
  4. [XL-2010] Problème avec les fonctions VBA String
    Par JOHN14 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/02/2011, 23h07
  5. [XL-2007] fonction vba excel problème avec hh:mm:ss
    Par chantalina dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/01/2010, 16h47

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