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 avec If then Else


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1
    Par défaut problème avec If then Else
    Bonjour,

    Voilà je suis débutant avec VBA sur excel,

    J'ai un problème avec la fonction If then else. je vous mets une partie de mon programme.

    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
    Private Sub CommandButton1_Click()
    With Sheets("feuil1").Cells(1, 1)
        .Value = .Value + 1
    
       i = Sheets("feuil1").Cells(1, 1).Value
       A = Sheets("feuil1").Range("B1:B21")
    Set i = .Find(A, LookIn:=xlValues)
    
    If i Is Nothing Then (c'est ici que cela plante)
        Sheets("Symbole").Cells(i, 1).Value = ComboBox1
        Sheets("Symbole").Cells(i, 4).Value = Text1
        Sheets("Symbole").Cells(i, 5).Value = Text2
        Sheets("Symbole").Cells(i, 6).Value = Text3
        Sheets("Symbole").Cells(i, 7).Value = Text4
        Sheets("Symbole").Cells(i, 8).Value = Text5
        Sheets("Symbole").Cells(i, 9).Value = Text6
        Sheets("Symbole").Cells(i, 10).Value = Text7
        Sheets("Symbole").Cells(i, 11).Value = Text8
        Sheets("Symbole").Cells(i, 12).Value = Text9
        Sheets("Symbole").Cells(i, 13).Value = Text10
        Sheets("Symbole").Cells(i, 14).Value = Text11
        Sheets("Symbole").Cells(i, 15).Value = Text12
        Sheets("Symbole").Cells(i, 16).Value = Text13
        Sheets("Symbole").Cells(i, 17).Value = Text14
        Sheets("Symbole").Cells(i, 18).Value = Text15
    
    Else
       Unload Me
       UserForm3.Show
       End If
    End With
    
    End Sub
    Merci de me dire si vous voyez une erreur,

  2. #2
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    Bonjour,

    Non, c'est ici que ce n'est pas bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    i = Sheets("feuil1").Cells(1, 1).Value
    A = Sheets("feuil1").Range("B1:B21")
    Set i = .Find(A, LookIn:=xlValues)
    Tu definis i comme etant une valeur (.value)
    et ensuite comme etant une Range set = .find

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim cel as range
    set cel = .find(A,lookin:=xlvalues)
    if not cel is nothing then

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    bonjour,
    Confirmation de Wilfried_42
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If i Is Nothing Then (c'est ici que cela plante)
    Tu a l'erreur 424 'objet requit'
    Is Nothing ne peu être employé que sur une variable objet, ou variant contenant un objet.

    autre remarque,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Sheets("Symbole").Cells(i, 1).Value = ComboBox1
        Sheets("Symbole").Cells(i, 4).Value = Text1
    Ce n'est pas suffisant
    il faut...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       Sheets("Symbole").Cells(i, 1).Value = ComboBox1.List(Combo1.listindex)
        Sheets("Symbole").Cells(i, 4).Value = Text1.text
    ' et peut être..dépend du format cellule
        Sheets("Symbole").Cells(i, 4).Value = Val(Text1.text)
    A+

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je ne dis pas que les réponses précédentes sont inexactes mais déjà, si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Else
       Unload Me
       UserForm3.Show
       End If
    End With
    tu décharges "Me" avant de charger Userform3
    Place "Unload Userform2" (et non pas Me) dans Userform_initialize de Userform3

    Edit
    Un autre problème non évoqué : Comment, dans une cellule, peux-tu rechercher la valeur d'une plage ? Sans tenir compte de l'erreur que tu fais en tentant d'instancier i comme tu le fais, même corrigé, cela m'étonnerait bien que ton code fonctionne.
    'là tu dis, "avec la cellule A1 de la feuille feuil1...
    With Sheets("feuil1").Cells(1, 1)
    .Value = .Value + 1

    i = Sheets("feuil1").Cells(1, 1).Value
    A = Sheets("feuil1").Range("B1:B21")
    '... tu demandes de chercher la plage "B1:B21" (dans A1 donc...)
    Set i = .Find(A, LookIn:=xlValues) '
    En corrigeant ainsi que Wilfried le conseille justement, tu feras la même chose
    Explique ce que tu cherches, dans quelle colonne, sur quelle plage ?

    Si ce que tu veux faire est chercher la valeur A1 de la feuil1 dans la plage "B1:B21" alors, en reprenant les corrections de LeFosrestier et de Wilfried, mets
    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
        Sheets("feuil1").Value = Sheets("feuil1").Value + 1
        With Sheets("feuil1").Range("B1:B21")
     
            A = Sheets("feuil1").Cells(1, 1).Value
            Set cel = .Find(A, LookIn:=xlValues)
            if not cel is nothing then 
                 'la donnée a été trouvée
                 Sheets("Symbole").Cells(i, 1).Value = ComboBox1.List(Combo1.listindex)
                 For NoCol = 1 to 15
                     Sheets("Symbole").Cells(cel.row, NoCol + 3).Value = Me.Controls(NoCol)
                 Next
              else
                 'la donnée n'a pas été trouvée
                 UserForm3.Show
            endif
        end with
    Mais je n'ai pas l'impression que ce soit ce que tu veux faire alors explique bien tout

Discussions similaires

  1. Problème avec if-then-else
    Par pongping dans le forum Prolog
    Réponses: 6
    Dernier message: 27/10/2008, 23h00
  2. [BO XIr2] créer un objet avec IF THEN ELSE
    Par schkrumble dans le forum Designer
    Réponses: 3
    Dernier message: 06/08/2008, 12h25
  3. Problème avec mon if, else if, else
    Par beegees dans le forum ASP
    Réponses: 5
    Dernier message: 16/05/2008, 22h32
  4. Exclure valeur avec if then else
    Par kgb1917 dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/10/2007, 13h33
  5. [CR 7] [débutante] pb avec if then else
    Par xs_nady dans le forum Formules
    Réponses: 8
    Dernier message: 28/05/2004, 15h36

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