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 :

Formule pour reconnaître un matricule et écrire automatiquement son nom ? [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de Pascal1970
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Octobre 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2016
    Messages : 31
    Par défaut Formule pour reconnaître un matricule et écrire automatiquement son nom ?
    Bonjour à vous,

    Me revoilà après un peu plus d'an d'absence pour perfectionner mon fichier excel avec macro.
    J'ai réussi grâce à vos connaissance à créer un fichier extraordinaire mais il reste que je suis vraiment débutant malgré tout.
    J'aimerais aujourd'hui le perfectionner pour répondre aux besoins de mes collègues qui l'utilisent.

    Pour faire simple: colonne A= matricule colonne B= Nom et colonne C= Prénom

    Présentement nous entrons le matricule, nous devons par la suite trouver son nom et prénom ...

    je cherche à ajouter une formule pour lorsque l'utilisateur entre un matricule dans la colonne A celui-ci vérifie la valeur s'il a déjà été inscrite auparavant dans la même colonne et réécrit automatiquement son nom et prénom...vous voyez? Question de sauvez du temps de recherche à savoir à qui appartient le matricule...On peut retrouver jusqu'à 300 matricules différents et environ 10 lignes pour chacun d'eux donc 3000 lignes sur une année...

    J'ai fait beaucoup de recherche sur le forum, je me suis rapproché avec recherchev mais sans succès...

    J'espère avoir été assez explicite, je suis ouvert à vos idées

    Si jamais vous pouvez m'aider, je vous serai très reconnaissant.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Pascal1970 Voir le message
    Bonjour,

    Le fichier joint est une adaptation de celui dans ce message de GONINPH : listbox1_click-selectionner-ligne-fichier-excel.

    La colonne B concatène les colonnes Matricule, Nom, Prénom. En cliquant sur la loupe, la boite de dialogue s'ouvre et en tapant quelques caractères contenus dans la colonne B, la liste se restreint au fur et à mesure.
    En sélectionnant l'enregistrement voulu dans la listbox, le bouton "Nouvelle ligne" insère une nouvelle ligne en ligne 3 et remplit les matricule, nom et prénom.

    Nb : On peut concaténer d'autres colonnes, il suffit de modifier la formule dans les cellules de la colonne B. La colonne B servant de recherche peut être placée en fin de tableau, il suffira d'adapter le code.

    Pièce jointe 406886

  3. #3
    Membre averti Avatar de Pascal1970
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Octobre 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2016
    Messages : 31
    Par défaut Dans les prochains jours...
    Merci Éric,

    Je vais prendre le temps d'examiner ce que tu m'as envoyé assurément mais j'ai besoin de temps...

    Mon but c'est que ce soit simple pour mes utilisateurs et plus rapide.

    Je vais revenir sans faute pour commenter et écrire résolu.

    Merci beaucoup pour ta disponibilité et ta rapidité.

  4. #4
    Membre averti Avatar de Pascal1970
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Octobre 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2016
    Messages : 31
    Par défaut Suite Formule pour reconnaître un matricule et écrire automatiquement son nom et prénom
    Bonjour,

    En reprenant le fichier "nom trouver nom prénom.zip" que tu m'as envoyé, ce que je recherche c'est un peu ça mais à l'inverse.

    Dans ce même fichier, disons que j'inscrit le client "10002" dans la cellule A13 et le nom de la personne apparaît en E13 "HUBER" et son prénom "CHRISTOPHE" en F13 car il a déjà été inscrit auparavant une première fois sur la ligne A10…

    Est-ce qu'une formule dans la colonne E et F pourrais reconnaître le # du client inscrit dans colonne A et faire lien avec la ligne 10?

    Je sais pas si je m'explique comme il le faut, mon français canadien n'étant pas celui européen :)

    Sinon je continuerai à les écrire sans macro...

    Merci à l'avance et je continue mon apprentissage!

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Pascal1970 Voir le message
    Est-ce qu'une formule dans la colonne E et F pourrais reconnaître le # du client inscrit dans colonne A et faire lien avec la ligne 10?
    Le plus simple serait d'avoir une table des clients pour rapatrier leurs nom et prénom avec une fonction RechercheV.

    Sinon savec VBA :

    Dans le module de l'onglet ModelContacts Clients :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Target.Count > 1 Then Exit Sub
     
        If Not Intersect(Target, Range("A2:A20000")) Is Nothing And Target.Offset(0, 4) = "" And Target.Offset(0, 5) = "" Then
           TrouverLesNomsEtPrenomsAvecCode Target, Range("A2:A10000"), 5, 6
        End If
     
     
    End Sub
    Dans un module standard :
    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
     
    Option Explicit
     
    Sub TrouverLesNomsEtPrenomsAvecCode(ByVal CelluleCode As Range, ByVal AireDeRecherche As Range, ByVal ColonneNom As Long, ByVal ColonnePrenom As Long)
     
    Dim CelluleRecherche As Range
     
        For Each CelluleRecherche In AireDeRecherche
     
            If CStr(CelluleRecherche) = Cstr(CelluleCode) _
               And CelluleRecherche.Offset(0, ColonneNom - AireDeRecherche.Column) <> "" _
               And CelluleRecherche.Offset(0, ColonnePrenom - AireDeRecherche.Column) <> "" Then
     
               CelluleCode.Offset(0, ColonneNom - AireDeRecherche.Column) = CelluleRecherche.Offset(0, ColonneNom - AireDeRecherche.Column)
               CelluleCode.Offset(0, ColonnePrenom - AireDeRecherche.Column) = CelluleRecherche.Offset(0, ColonnePrenom - AireDeRecherche.Column)
               Exit For
     
            End If
        Next CelluleRecherche
     
    End Sub

  6. #6
    Membre averti Avatar de Pascal1970
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Octobre 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2016
    Messages : 31
    Par défaut Problème résolu!
    Merci énormément,

    J'inscrit la matricule dans la colonne A et le nom et prénom s'inscrit automatiquement dans la colonne correspondant! WOW ! SURPRENANT!

    Je vais prendre le temps d'examiner la macro que tu as utilisé et l'adapter à mon fichier.

    C'est ce que je recherchais, je vais également testé sa rapidité sur un nombre de ligne de 1000 et +, on verra?

    J'espère que cela aidera d'autre utilisateur.

    Merci Éric, tu es un ami!

  7. #7
    Membre averti Avatar de Pascal1970
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Octobre 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2016
    Messages : 31
    Par défaut pousser un peu plus loin la recherche sur les autres feuilles?
    Bonjour Éric ou autre,

    j'utilise ce code fourni par Éric, il fonctionne très bien dans mon fichier.

    Présentement, chaque feuil de mon dossier sont intitulée par l'année en cours donc présentement "2018", mais nous changeons d'année donc je copie et change de feuil pour "2019" et recommence avec zéro inscription.

    Est-il possible d'ajouter au code ci-bas une formule recherche sur l'ancienne feuil intitulée "2018"?

    autrement dit, lorsque j'inscrit un matricule sur la feuil "2019", il recherche s'il a déjà été inscrit auparavant mais également sur l'ancienne feuil intitulée "2018" !

    Ça serait extraordinaire sinon je suis très satisfait du code présentement!

    Merci et je vous souhaite une très bonne année 2019!

    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
    Option Explicit
     
    Sub TrouverLesNomsEtPrenomsAvecCode(ByVal CelluleCode As Range, ByVal AireDeRecherche As Range, ByVal ColonneNom As Long, ByVal ColonnePrenom As Long)
     
    Dim CelluleRecherche As Range
     
        For Each CelluleRecherche In AireDeRecherche
     
            If CStr(CelluleRecherche) = Cstr(CelluleCode) _
               And CelluleRecherche.Offset(0, ColonneNom - AireDeRecherche.Column) <> "" _
               And CelluleRecherche.Offset(0, ColonnePrenom - AireDeRecherche.Column) <> "" Then
     
               CelluleCode.Offset(0, ColonneNom - AireDeRecherche.Column) = CelluleRecherche.Offset(0, ColonneNom - AireDeRecherche.Column)
               CelluleCode.Offset(0, ColonnePrenom - AireDeRecherche.Column) = CelluleRecherche.Offset(0, ColonnePrenom - AireDeRecherche.Column)
               Exit For
     
            End If
        Next CelluleRecherche
     
    End Sub
    ET

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Option Explicit
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Target.Count > 1 Then Exit Sub
     
        If Not Intersect(Target, Range("f3:f20000")) Is Nothing And Target.Offset(0, 4) = "" And Target.Offset(0, 5) = "" Then
           TrouverLesNomsEtPrenomsAvecCode Target, Range("f3:f10000"), 4, 5
        End If
     
     
    End Sub

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/07/2016, 00h29
  2. Réponses: 4
    Dernier message: 02/06/2016, 10h04
  3. [XL-2010] Formule pour repérer la date du jour et son lendemain
    Par mosar3 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/10/2015, 19h06
  4. [Joomla!] Plugin pour écrire automatiquement dans un article selon id
    Par eLynx dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 20
    Dernier message: 22/05/2009, 14h01
  5. Réponses: 0
    Dernier message: 27/09/2008, 13h01

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