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 :

Chercher l'existance d'une liste dans une autre (par macro en VBA)


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Novembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 29
    Points : 17
    Points
    17
    Par défaut Chercher l'existance d'une liste dans une autre (par macro en VBA)
    Bonjour,

    Je débute en VBA et j'aurais besoin d'aide pour résoudre un problème.
    Je dispose d'un tableau à 3 colonnes. La première contient des numéros de téléphone (fictifs) d'un annuaire. La deuxième contient des échantillons de numéro de téléphone.

    Ce que je voudrais faire c'est, par l'appui sur un bouton et de manière automatique, afficher dans la colonne C si le numéro de la colonne B existe dans la colonne A.
    L'autre difficulté serait que la macro soit adaptable à n'importe quelle longueur de tableau.

    Avez-vous des idées de comment faire ?

    Merci d'avance pour vos retours.

    PS : Le fichier exemple est en pièce jointe.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 416
    Points : 2 879
    Points
    2 879
    Par défaut
    Bonjour

    Je vais répondre à côté de la plaque : il n'est pas besoin de VBA pour cela.

    Il faut transformer les données en tableau structuré (cf article de Pierre Fauconnier).
    Puis, une simple formule en colonne C nous donnera les résultats. Et ceci, même si le tableau s'agrandit.
    La formule en colonne C : =SI(ESTNA(EQUIV([@[Numéro relevés ]];[numéro annuaire];0));"Non";"Oui")Nom : tel.png
Affichages : 438
Taille : 39,5 Ko

    L'avantage par rapport au bouton VBA est que cela fonctionne en permanence sans avoir à faire la moindre manipulation. Il suffit de rajouter, modifier, supprimer des numéros de téléphone dans les colonnes A ou B.

    En espérant que cela serve
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Novembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Bonjour Pierre et merci de ta réponse.

    Pour mon cas, l'utilisation d'un bouton est nécessaire (et je ne dois pas modifier manuellement le tableau).

    Cela dit, ta formule fonctionne très bien. Je l'ai d'ailleurs utilisé grâce à l'enregistreur de macro.

    J'aimerais cependant optimiser ma macro pour que la taille de la colonne C s'adapte à celle de la colonne B.

    Aurais-tu une idée de comment faire ?

    Mon code actuelle est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Test()
    '
    ' Test Macro
    '
        Range("C2").Select
        ActiveCell.FormulaR1C1 = "=IF(ISNA(MATCH(C[-1],C[-2],0)),""Non"",""Oui"")"
        Range("C2").Select
        Selection.AutoFill Destination:=Range("C2:C10000"), Type:=xlFillDefault
        Range("C2:C10000").Select
     
    End Sub
    Merci d'avance.

  4. #4
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 416
    Points : 2 879
    Points
    2 879
    Par défaut
    Rebonjour

    Je considère qu'il n'y a pas de cellules vides parmi les n° de téléphone dans la colonne B. Et qu'il y a au moins un n° saisi en B2.

    Alors on peut, par exemple, proposer la macro VBA suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Test()
    '
    ' Test Macro
    '
     
    Dim LigMax As Integer
     
    LigMax = Range("B1").End(xlDown).Row
     
    Range("C2:C" & LigMax).FormulaR1C1 = "=IF(ISNA(MATCH(RC[-1],C[-2],0)),""Non"",""Oui"")"
     
    End Sub

    En espérant que cela convienne mieux

    Bonne journée

    Pierre
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Novembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Oui, c'est exactement ce que je voulais !

    Merci beaucoup pour ton aide.

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

Discussions similaires

  1. Chercher l'existance d'une liste dans une autre (par macro en VBA)
    Par Gex-88 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/11/2019, 11h44
  2. Réponses: 6
    Dernier message: 11/06/2008, 16h35
  3. Comment déplacer une tache sous une autre par Macro
    Par yoyo173fr dans le forum VBA Project
    Réponses: 0
    Dernier message: 09/06/2008, 16h25
  4. Réponses: 17
    Dernier message: 12/07/2006, 22h04
  5. Réponses: 2
    Dernier message: 08/06/2006, 13h38

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