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 :

Plusieurs conditions avec ElseIf - problème


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
    Chargé de projet
    Inscrit en
    Avril 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Chargé de projet

    Informations forums :
    Inscription : Avril 2014
    Messages : 13
    Par défaut Plusieurs conditions avec ElseIf - problème
    Bonjour,

    Je cherche à attribuer une valeur « oui » ou « non » dans la colonne U par rapport à la valeur de la cellule de la colonne B.
    Par contre, je voudrais appliquer 2 conditions dans « ElseIf ActiveCell.Value = "Gestion" And ActiveCell.Offset(0, 3).Value = "" » mais j’ai un message d’erreur incompatibilité de type.

    Pouvez-vous m’expliquer pourquoi ?

    Le code complet ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Range("B1").Select
     Range(Selection, Selection.End(xlDown)(0)).Select
     For Each cell In Selection
     X = X + 1
     ActiveCell.Offset(1, 0).Select
     If ActiveCell.Value = "Inv" Then
     ActiveCell.Offset(0, 19).Value = "non"
     ElseIf ActiveCell.Value = "Gestion" And ActiveCell.Offset(0, 3).Value = "" Then
     ActiveCell.Offset(0, 19).Value = "non"
     Else
     ActiveCell.Offset(0, 19).Value = "oui"
     End If
     Next
    Merci par avance

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Roulax (et bienvenu sur le Forum)

    Ouh là!

    - Balises code pour reporter le code dans la discussion
    - Déclaration des variables
    - A quoi sert X?
    - Ces p... de Select qui ne servent à rien

    Essaie cela.
    Pour ce faire, regarde toutes les méthodes et propriétés utilisées
    Comprends par tous les moyens et reviens si nécessaire

    (J'ai volontairement passé outre la méthode 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
    15
    16
    17
    18
    19
    20
    21
    22
    Option Explicit
     
    Public Sub montest_Marcel()
     
    Dim c As Range
    Dim derlign As Long ' à adapter
     
    With Worksheets(1)
          derlign = .Cells(.Rows.Count, 2).End(xlUp).Row
          For Each c In .Range("B1:B" & derlign)
                With c
                      Select Case .Value
                            Case "Inv"
                                  .Offset(0, 19).Value = "non"
                            Case "Gestion"
                                  .Offset(0, 19).Value = IIf(.Offset(0, 3).Value = "", "non", "oui")
                      End Select
                End With
          Next c
    End With
     
    End Sub

  3. #3
    Invité
    Invité(e)
    Par défaut
    bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select Case .Value
                            Case "Inv",""
                                  .Offset(0, 19).Value = "non"
                            Case "Gestion"
                                  .Offset(0, 19).Value = "oui" 
    End Select

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Sauf erreur, il y une condition sur la cellule Non?

  5. #5
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    Salut

    Je dirais même

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
                With c
                    'Soit initialiser à "oui"
                    '.Offset(0, 19).Value = "oui"
                    Select Case .Value
                        Case "Inv"
                            .Offset(0, 19).Value = "non"
                        Case "Gestion"
                            .Offset(0, 19).Value = IIf(.Offset(0, 3).Value = "", "non", "oui")
                        'Soit ajouter un Else
                        Case Else
                            .Offset(0, 19).Value = "oui"
                    End Select
                End With
    Le Select Case à l'avantage (je trouve) de pouvoir être modifié rapidement mais si tu veux garder ta structure If...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
    Public Sub montest_Marcel()
     
    Dim CellInB As Range
     
        'On pointe la 1ère feuille du classeur
        With Worksheets(1)
            'On boucle sur les cellules de la colonne B, de B1 à la dernière cellule non vide en partant du bas de la feuille
            For Each CellInB In .Range("B1", .Cells(.Rows.Count, "B").End(xlUp))
                'On pointe la cellule
                With CellInB
                    'On regarde les conditions du "non"
                    If (.Value = "Inv") Or ((.Value = "Gestion") And (.Offset(0, 3).Value = "")) Then
                        .Offset(0, 19).Value = "non"
                    Else
                        .Offset(0, 19).Value = "oui"
                    End If
                End With
            Next
        End With
     
    End Sub
    Par contre j'attire ton attention sur les comparaison de chaine, la comparaison que tu fais en écrivant Cellule.value= "Inv" est sensible à la case et donc si la cellule contient "inv", la comparaison retournera un False.
    Tu as plusieurs choix possibles pour éviter ce type de problème, en voici deux



    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #6
    Membre averti
    Homme Profil pro
    Chargé de projet
    Inscrit en
    Avril 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Chargé de projet

    Informations forums :
    Inscription : Avril 2014
    Messages : 13
    Par défaut
    Merci pour vos réponses.
    Problème résolu

Discussions similaires

  1. Supprimer des lignes Excel selon plusieurs conditions avec VBA
    Par StVenum dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/01/2017, 13h04
  2. update plusieurs conditions avec jointures
    Par nisrine hammout dans le forum Langage SQL
    Réponses: 5
    Dernier message: 28/07/2016, 12h37
  3. Réponses: 10
    Dernier message: 26/03/2008, 15h00
  4. plusieurs conditions avec foreach
    Par decksroy dans le forum Langage
    Réponses: 16
    Dernier message: 06/03/2007, 11h43
  5. [ Struts ] plusieurs conditions avec equal?
    Par njac dans le forum Struts 1
    Réponses: 7
    Dernier message: 04/06/2004, 09h04

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