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 :

Condition IF dans deux feuilles différentes [XL-2003]


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
    Inscrit en
    Février 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 30
    Par défaut Condition IF dans deux feuilles différentes
    Bonjour,

    J'aimerai faire une macro me permettant d'afficher une MsgBox si la cellule A1 de la "feuill1" ne contient pas une valeur figurant dans la colonne A de la "feuill2".

    Comment est-ce réalisable et où insérer la macro ? Dans la feuille 1 ou dans la feulle 2? Merci de votre aide.

    Xavier.

  2. #2
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    Bonjour,

    Quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub cherche()
     
        Dim val As Variant
        Dim plage As Range
     
        With ThisWorkbook
            val = .Worksheets("Feuil1").Range("A1").value
            Set plage = .Worksheets("Feuil2").Range("A:A")
        End With
        If plage.find(What:=val, LookIn:=xlValues, lookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) Is Nothing Then
            MsgBox "Valeur " & val & "non trouvée"
        End If
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 30
    Par défaut
    Merci Issoram,

    La macro fonctionne parfaitement. Par contre, comment faire en sorte qu'elle s'applique automatiquement dès que l'on rentre une valeur en A1 ?

  4. #4
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    Il faut que tu mettes la recherche dans la procédure événementielle qui gère la modification des cellules de ta feuille.
    Dans le code de Feuil1 tu ajoutes ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = "A1" Then
        ' faire ton traitement ici
        End If
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 30
    Par défaut
    Excuse moi de mon incompétence, j'ai fait ce que tu m'as dit mais ca ne fonctionne pas. Où est mon erreur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    If Target.Address = "A1" Then Application.Run ("cherche")
     
    End Sub

  6. #6
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    Comme ça par exemple:
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
         If Target.Address = "A1" Then
     
           Dim plage As Range
     
           With ThisWorkbook
              Set plage = .Worksheets("Feuil2").Range("A:A")
           End With
           If plage.find(What:=Target.Value, LookIn:=xlValues, lookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) Is Nothing Then
               MsgBox "Valeur " & Target.Value & "non trouvée"
           End If
     
        End If
     
    End Sub

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 30
    Par défaut
    C'est bon j'ai réussi tout simplement avec ce code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_Change(ByVal Target As Range) 
           Dim plage As Range
     
           With ThisWorkbook
              Set plage = .Worksheets("Feuil2").Range("A:A")
           End With
           If plage.find(What:=Target.Value, LookIn:=xlValues, lookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) Is Nothing Then
               MsgBox "Valeur " & Target.Value & "non trouvée"
           End If
     
        End If
     
    End Sub
    En tout cas, merci Issoram.

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

Discussions similaires

  1. [XL-2010] Associer des valeurs identiques dans deux feuilles différentes
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/01/2014, 15h38
  2. Ecrire dans deux fichiers différent
    Par Diablo_22 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 09/08/2007, 17h11
  3. [IOException] Ecriture dans deux fichiers différents
    Par arkheron dans le forum Langage
    Réponses: 3
    Dernier message: 04/06/2007, 13h00
  4. Ecrire des données dans deux feuilles excel
    Par gantec dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 28/02/2007, 09h28
  5. Ecrire dans deux feuilles par userform
    Par gantec dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/02/2007, 15h43

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