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 :

Faire une action si la recherche ne trouve rien [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Femme Profil pro
    Formatrice bureautique
    Inscrit en
    Septembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Formatrice bureautique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 202
    Points : 79
    Points
    79
    Par défaut Faire une action si la recherche ne trouve rien
    Hello l'équipe,

    Je suis en train de développer un planning dans Excel avec des macros pour automatiser un certains nombres de tâches et je suis confrontée à un problème que je n'arrive pas à résoudre...

    Dans mon code VBA, je fais une recherche, jusqu'ici aucun problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Cells.Find(What:=service, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
            :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            False, SearchFormat:=False).Activate
    Mon problème est le suivant : Lorsque la recherche est lancée et que l'élément est trouvé, il continue la suite des instructions... Parfait... Mais lorsque la recherche ne retrouve pas l'élément, j'aimerai lui dire de faire une autre action... Dois-je utiliser un IF avant la fonction Find ? Mais comment lui dire dans le IF que si le résultat de la recherche ne trouve rien, alors faut lancer une autre action ?

    Si quelqu'un peut me donner un p'tit coup de pouce , ca sera super cool...

    Merci d'avance et belle journée,

  2. #2
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Bonjour,

    Par principe, il faut éviter dans du code VBA de faire des select ou activate. Mieux vaut travailler avec des variables. Si tu regardes l'aide d'Excel sur Find, tu auras ta solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    With Worksheets(1).Range("a1:a500")
        Set c = .Find(2, lookin:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                c.Value = 5
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
    End With
    « Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell

  3. #3
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    autre solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub essai()
    Dim celadresse As Range
    Set celadresse = Cells.Find(What:="toto", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
            :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            False, SearchFormat:=False)
    If celadresse Is Nothing Then
      MsgBox "pas de correspondance" 'ou ce que tu veux
    Else
      celadresse.Select 'travailles avec la cellule plutot que la selectionner
      'exemple
      MsgBox celadresse.Address
    End If
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #4
    Membre régulier
    Femme Profil pro
    Formatrice bureautique
    Inscrit en
    Septembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Formatrice bureautique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 202
    Points : 79
    Points
    79
    Par défaut Merci !!!
    Entretemps, j'avais trouvé la même solution que me propose CaseFayere et que j'allais soumettre mais trop tard...

    Merci tout de même et belle journée

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

Discussions similaires

  1. Faire une action en attente d'une touche
    Par utoria dans le forum Assembleur
    Réponses: 1
    Dernier message: 15/03/2007, 11h38
  2. comment faire une action sur JPanel
    Par L4BiN dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 11/01/2007, 12h13
  3. faire une action lors de frappes clavier
    Par wag71 dans le forum Access
    Réponses: 9
    Dernier message: 20/12/2006, 16h00
  4. Faire une action sur Control + C
    Par bluecurve dans le forum Langage
    Réponses: 1
    Dernier message: 20/07/2006, 00h19
  5. Comment faire une action, par rapport au temps
    Par Happy dans le forum OpenGL
    Réponses: 5
    Dernier message: 12/11/2005, 13h27

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