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 la condition IF


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Par défaut Problème avec la condition IF
    Bonjour tout le monde))

    Je veux faire une condition IF mais ça ne marche pas vraiment (Erreur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If " The value of the case A3 in Sheet1 is present in the first column in the sheet 2" Then......
    J'ai essayé ce code ci dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If Worksheets("Sheet1").Range("A3") = Worksheets("Sheet2").Range("A:A") Then......
    Solutions ou propositions??

    Merci)))

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

    Une solution possible :

    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
    Sub TestRechercherValeur()
     
        If RechercherValeur(Sheets(2).Columns(1), Sheets(1).Range("A3")) = True Then
     
           MsgBox "OK"
     
        End If
     
    End Sub
     
     
    Function RechercherValeur(ByVal AireABalayer As Range, ByVal ValeurATrouver As String) As Boolean
     
    Dim CellRecherchee As Range
     
        RechercherValeur = False
        Set CellRecherchee = AireABalayer.Find(What:=ValeurATrouver, LookIn:=xlValues)
        If Not CellRecherchee Is Nothing Then RechercherValeur = True
        Set CellRecherchee = Nothing
     
    End Function
    Cordialement.

  3. #3
    Membre à l'essai
    Homme Profil pro
    mathematiques financieres
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : mathematiques financieres
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Par défaut
    Bonjour,

    Il y a egalement plus simple via une function deja toute faite : countif. Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    If Application.WorksheetFunction.CountIf(Sheets(2).Columns(1), Range("a3")) >= 1 Then
     
        MsgBox "ok"
     
        Else
     
        MsgBox "erreur"
    End If
     
    End Sub

    Escorpion

  4. #4
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 128
    Par défaut Re
    Bonjour,

    Si tu veux juste savoir si ta valeur de départ est présente dans ta colonne d'arrivée, sans compter le nombre de fois où elle est présente, tu n'as pas besoin d'utiliser la fonction CountIf.

    Tu peux simplement parcourir les cellules de ta colonne, et dès que tu atteints une égalité (ou non d'ailleurs si ta valeur n'est pas présente) tu sors de la boucle. ça te permet de t’arrêter dès que la valeur est trouvée, ça rend les calculs plus rapides.

    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 estPresent()
    Dim nb_lignes As Long
    nb_lignes = Worksheets("Sheet2").Range("A1").End(xlDown).Row
    'ça te donne le nombre de lignes de ta colonne A
     
    For i=1 to nb_lignes
       If Worksheets("Sheet1").Range("A3").Value = Worksheets("Sheet2").Range("A"& i).Value Then
         'égalité trouvée, on s'arrete
          MsgBox ("La valeur recherchée est présente")
          Exit Sub
       End If
    Next i
     
    End Sub
    Voilà !

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Bonjour, bonjour !

    Utiliser des fonctionnalités d'Excel est bien plus efficace qu'une boucle réinventant la roue en VBA ‼
    Une fonctionnalité d'Excel étant déjà compilée est donc bien plus rapide et efficace qu'un code interprété en VBA …

    Donc avant d'entreprendre ne serait-ce que la première ligne de code, se poser la question
    « Existe-t-il une fonctionnalité d'Excel répondant, même partiellement, à mon besoin ? »


    __________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    712
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 712
    Par défaut
    Citation Envoyé par Slooby Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nb_lignes = Worksheets("Sheet2").Range("A1").End(xlDown).Row
    'ça te donne le nombre de lignes de ta colonne A
    Bonjour,

    Je suis totalement d'accord avec Marc-L.
    Et ton code suppose sans le dire qu'il n'y a aucune case vide insérée parmi les cases remplies en colonne A. C'est une supposition plutôt risquée.

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour Marc,
    Utiliser des fonctionnalités d'Excel est bien plus efficace qu'une boucle réinventant la roue en VBA ‼
    Une fonctionnalité d'Excel étant déjà compilée est donc bien plus rapide et efficace qu'un code interprété en VBA …
    Donc avant d'entreprendre ne serait-ce que la première ligne de code, se poser la question
    « Existe-t-il une fonctionnalité d'Excel répondant, même partiellement, à mon besoin ? »
    Je ne peux qu'abonder dans ton sens.
    Je me fais la même réflexion dès que je dois aborder un problème dans Excel.
    Y a-t-il une fonction qui me permette d'obtenir ce résultat ou y a-t-il un outil d'excel ayant sa méthode en VBA, me permettant de réaliser ce que j'attends.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 128
    Par défaut excel VS vba
    Je suis d'accord avec toi Marc :

    Citation Envoyé par Marc-L Voir le message

    Donc avant d'entreprendre ne serait-ce que la première ligne de code, se poser la question
    « Existe-t-il une fonctionnalité d'Excel répondant, même partiellement, à mon besoin ? »
    Mais même si Excel peut nous faire cette recherche de cellule, on perd l'interaction de la machine avec l'utilisateur.
    Je pense que le but premier de "Russian" est de renseigner une valeur, et d'afficher pour l'utilisateur (via un MsgBox) s'il y a existence ou non de cette valeur.

  9. #9
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Merci de vos retours !

    Philippe, ton excellent tutoriel sur les filtres avancés en est la démonstration !

    Slooby, je ne comprends pas ta réflexion car c'est exactement ce que réalise le code d'Escorpion …


Discussions similaires

  1. openForm, problème avec la condition
    Par Salsaboy60 dans le forum IHM
    Réponses: 1
    Dernier message: 12/02/2009, 21h59
  2. Problème avec une condition IF
    Par Invité dans le forum Windows
    Réponses: 11
    Dernier message: 12/02/2009, 16h17
  3. Problème avec une Condition Ou ||
    Par Jcpan dans le forum Débuter avec Java
    Réponses: 12
    Dernier message: 14/01/2009, 12h19
  4. Problème avec les conditions ''sous-ensemble d'un tableau''
    Par djangossoul dans le forum LabVIEW
    Réponses: 2
    Dernier message: 07/06/2007, 12h23
  5. Problème avec une condition
    Par ghan77 dans le forum Débuter
    Réponses: 2
    Dernier message: 16/12/2005, 16h18

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