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 :

Aide Macro Recherche


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Aide Macro Recherche
    Bonjour a tous,
    Voila mon problème: je dois réaliser sous excel une base de donnée client, et il me faudrait une page recherche dans laquelle on peut directement modifier les informations du client.
    Plus précisément je cherche deux formules de macro:

    -La première irait chercher dans un tableau d'une feuille que l'on pourrait appeler feuille B les informations se trouvant sur la ligne dont le numéro est le critère de recherche (les numéros de ligne on été entré manuellement, il ne s'agit pas des numéros de ligne de la feuille). Sachant que le critère de recherche est entré dans une autre feuille A (imaginons en B2)et les informations qui doivent être afficher le sont également sur cette autre feuille A. De plus autre complication les information affichée sur la feuille A sont disposée de manière spécifique dans differentes cellules et non pas en ligne comme sur la feuille B.

    -La deuxieme ferait le chemin inverse, elle prendrait les info de la feuille A, et irait les remettre a leur place dans la feuille B (même après modification). En prenant comme critère le numéro de ligne qui s'affiche sur la feuille A a la suite de la recherche précédente. Imaginons en D5


    J'ai essayer d'etre le plus precis possible dans ma description du probleme, j'ai deja rechercher sur internet pas mal de macro recherche mais sans succès et je connais mal visual basic, et le language macro.

    Merci de votre aide, j'en ai bien besoin.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Points : 391
    Points
    391
    Par défaut
    pourquoi ne pas faire sa avec un petit Userform , une boite de dialogue que tu cree. qui remplace ta feuille A et apre son fait le reste...

    ou alors tu tiens absolument a faire sa sur des feuilles.?
    tom

    "Barbar : The rest of the warrior"

    Into the wild....

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Le petit fichier que j'ai ajouter c'est un exemple de ce que je cherche a pouvoir faire.

    Par exemple imaginons que dans mon fichier client il y ai une rectification a faire sur le numero 22, je tape ce numero dans la feuille A en case B2, et dans le petit formulaire a coté les info s'affichent, mais voyez qu'avec le formulaire les informations ne sont pas cote a cote. Puis je modifie l'adresse de ce numero 22, et j'enregistre les modifications a l'aide d'une autre macro. Mais les modifications doivent s'enregistrer dans la meme base de donnée que la ou elles ont été tirées.

    Je pense qu'il faut passer par une feuille annexe qui copie les informations du formulaire via un simple =C3, puis la macro fait un copier coller. Mais il faut qu'elle renvoie exactement au bon endroit c'est ca le probleme. C'est d'aller chercher l'information au bon endroit, de retrouver la ligne qu'il faut.

    J'ai deja vu des macro qui s'en rapproche mais c'est plutot particulier

    ha un userform je connais pas ca peut etre interressant

    qu'est ce que c'est?

  4. #4
    Membre averti Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Points : 391
    Points
    391
    Par défaut
    tiens regarde ceci
    Pièce jointe 28062


    amuse toi bien
    tom

    "Barbar : The rest of the warrior"

    Into the wild....

  5. #5
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Bonjour

    En gardant l'idée de travailler avec des feuilles.

    1. nommer les zones de la feuille de formulaire
    2. Nommer les entêtes de la feuille de données

    Voici deux macros qui transfèrent dans un sens ou dans l'autre

    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
    22
    23
    24
    25
    26
    27
    Sub RecupererDonnees()
        Dim Numero As Long
        Dim CelDonnees As Range ' Cellule de la feuille de données
     
        Numero = Range("foNum")
        'shDonnees.Activate
        Set CelDonnees = shDonnees.Range("a:a").Find(What:=1, after:=shDonnees.Range("a1"), LookIn:=xlValues, LookAt:=xlWhole)
        If Not CelDonnees Is Nothing Then
            Range("fonom").Value = CelDonnees(1, Range("bdnom").Column).Value
            Range("foprenom").Value = CelDonnees(1, Range("bdprenom").Column).Value
            Else
            MsgBox "L'enregistrement n'a pas été trouvé"
        End If
    End Sub
     
    Sub EnregistrerDonnees()
        Dim Numero As Long
        Dim CelDonnees As Range
     
        Numero = Range("foNum")
        Set CelDonnees = shDonnees.Range("a:a").Find(What:=1, after:=shDonnees.Range("a1"), LookIn:=xlValues, LookAt:=xlWhole)
        If Not CelDonnees Is Nothing Then
            CelDonnees(1, Range("bdnom").Column).Value = Range("fonom").Value
            CelDonnees(1, Range("bdprenom").Column).Value = Range("foprenom").Value
            Else
            MsgBox "L'enregistrement n'a pas été trouvé"
        End If
    J'ai nommé les feuilles en VBA (propriété (Name) de la feuille en VBA). Nommer les entêtes de la feuille de données permet de ne pas devoir tenir compte de l'ordre des colonnes dans la feuille de données en cas d'insertion de colonne.

    Regarde ce fichier

    Pour moi, les étapes 1 et 2 sont nécessaires également si tu utilises un userform.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    tomy je suis sous mac je peut pas lire rar dsl tu peut pas le mettre sous un autre format stp?

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Attention que sous Mac, tu ne disposes pas de toutes les possibilités de code VBA que sous Windows. Il faudra probablement adapter...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Merci Pierre je pense que tu as bien saisi mon probleme.
    Cependant je ne comprend pas tres bien le langage VBA, le fichier que tu m'a passé semble ne pas fonctionner. J'ai ajouter un nouveau client mais ca ne s'affiche pas dans le formulaire. Mais je pense que c'est bien ce que je voulais je regarde a faire fonctionner ca.

    Peut etre cela a t il un rapport avec le fai que je sois sous mac. J'ai Excel 2004.
    Je sais pas si ca peut changer quelque chose.

  9. #9
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Oui tu as répondu pendant que je tapais, donc ca doit etre ca. Cependant l'utilisation finale se fait sous windows je vais regarder comment ca rend sur windows.

  10. #10
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par baldron Voir le message
    Merci Pierre je pense que tu as bien saisi mon probleme.
    Cependant je ne comprend pas tres bien le langage VBA, le fichier que tu m'a passé semble ne pas fonctionner. J'ai ajouter un nouveau client mais ca ne s'affiche pas dans le formulaire. Mais je pense que c'est bien ce que je voulais je regarde a faire fonctionner ca.

    Peut etre cela a t il un rapport avec le fai que je sois sous mac. J'ai Excel 2004.
    Je sais pas si ca peut changer quelque chose.
    Le code que j'ai donné et le classeur exemple sont là pour te donner des idées.

    En l'état, l'ajout de données (nouvelle fiche) n'est pas géré par ce code. L'idée, pour ajouter un client, est de tester si la recherche renvoie une cellule = à nothing ou pas. Si oui, il s'agit d'une nouvelle fiche. il faut alors pointer vers une nouvelle cellule. Tu peux utiliser le code suivant, qui remplace la procédure EnregistrerDonnees précédente
    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 EnregistrerDonnees()
        Dim Numero As Long
        Dim CelDonnees As Range
        Dim Reponse As VbMsgBoxResult
     
        Numero = Range("foNum")
        Set CelDonnees = shDonnees.Range("a:a").Find(What:=Numero, after:=shDonnees.Range("a1"), LookIn:=xlValues, LookAt:=xlWhole)
     
        If CelDonnees Is Nothing Then
            Reponse = MsgBox("L'enregistrement n'a pas été trouvé. Voulez-vous ajouter le nouvel enregistrement?", vbQuestion + vbYesNo)
            If Reponse = vbYes Then
                Set CelDonnees = shDonnees.Range("a" & Rows.Count).End(xlUp)(2)
                CelDonnees.Value = Range("fonum")
            End If
        End If
     
        If Not CelDonnees Is Nothing Then
            CelDonnees(1, Range("bdnom").Column).Value = Range("fonom").Value
            CelDonnees(1, Range("bdprenom").Column).Value = Range("foprenom").Value
        End If
    End Sub
    Il faut aussi ajouter un peu d'ergonomie (un bouton, la gestion du changement de la cellule foNum pour une récupération automatique, le fait de pouvoir entrer une valeur non présente dans la liste déroulante pour ajouter un nouvel enregistrement, ...)

    Cela étant, il y a peut-être des impératifs à utiliser Excel, sinon, Access est beaucoup plus indiqué pour ce genre de manipulations...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Pierre j'ai eu beau essayer tout ce que je pouvais j'arrive pas a faire fonctionner tout ca. Mais je connais presque pas visual basic.
    J'ai refait ma feuille d'exemple en mieux, est ce que tu pourrais stp y adapter ton exemple.

    Sinon pour Access je l'ai pas et mon boss prefererais que je fasse ca sur excel c'est pour ca que je me galere a essayer de lui faire un truc correct.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-2013] aide macro recherche
    Par bsh54 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/07/2015, 19h43
  2. aide pour recherche globale
    Par flo456 dans le forum Outlook
    Réponses: 5
    Dernier message: 03/05/2007, 07h20
  3. Macro recherche dans le classeur
    Par Max485 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/04/2007, 15h07
  4. Aide pour recherche d'éditeur
    Par angus9 dans le forum Structure
    Réponses: 14
    Dernier message: 11/08/2006, 21h03

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