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 :

Copier donnée d'une "base de donnée" avec Commandbutton


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 84
    Points : 37
    Points
    37
    Par défaut Copier donnée d'une "base de donnée" avec Commandbutton
    Bonjour, alors je m'explique car c'est un peu compliquer. Donc voila j'ai une première page que je nomme base de données car je rentre toutes les informations pour chaque personne (voir screen 1). Dans un second temps j'ai une deuxième page ou la j'ai une liste déroulante qui s'actualise par rapport au Nom que je rajoute dans la base de donnée. (voir screen 2). A coter j'ai créer un CommandButton et voila ou je suis coincé je voudrais que quand je sélectionne un Nom dans ma liste déroulante et que quand j'appuie sur ce bouton de commande, que toute les informations de la personne apparaissent en dessous dans la même forme que le screen 1. Voir screen 4 pour vous montrez comment je voudrais que sa copie
    Merci d'avance pour votre aide, j'ai vraiment besoin de vous c'est ma dernière macro pour mon projet de fin d'année et je suis complètement bloquer

    screen 1 : https://gyazo.com/dacf56792a3d44904fdec6e5191e8f64
    screen 2 : https://gyazo.com/943b03105829da868a6e5a837f0476d0
    screen 3 : https://gyazo.com/a790543722fe648b142ff8d00efb2e3e

  2. #2
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut,

    Avant de passer par une macro, pourquoi ne pas utiliser la fonction RECHERCHEV.
    Tu recherches le choix de la liste, dans le tableau du sceen1 et le tour est joué.

    Pour moi, ici, pas besoin de macroter (action de faire une macro )
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 84
    Points : 37
    Points
    37
    Par défaut
    Je ne peux pas utiliser cette fonction je pense car déja je suis sur une page différente et de plus, il faut que 17 données soit afficher en meme temps par ligne. Et si il y a plusieurs ligne correspondante a la meme personne je voudrais les deux :/ . Je pense qu'un commandbutton pourrait me facilite la chose si je trouve le bon code.
    Cordialement

  4. #4
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Il y a 2 choses dans le dernier message :
    Le fait que tu sois dans 2 feuilles, n'est pas un problème pour l'utilisation de la fonction recherchev. Tu pourrais même être dans 2 doc différents, çà marcherai.

    Par contre, c'est le fait qu'il y ai X lignes correspondants à ta sélection qui fait que là, elle n'est plus utilisable.

    Dans ce cas, le plus simple est de ce diriger vers l'utilisation des filtres Avancés. Au pire le tout dans une macro.
    Le principe :
    Tu nommes la zone avec tes données (par exemple Base)
    Tu te places dans l'autre feuille (celle avec la liste)
    Tu vas dans l'onglet Données et tu choisis Filtre avancé.
    Dans la première zone, tu mets "Base" (nom donné au début)
    Tu demandes d'extraire vers un autre emplacement.

    Pour compléter, un peu de lecture :
    http://philippetulliez.developpez.co...ncedfilter/#LI

    Et comme indiqué plus haut, quand tu vois que çà marche. Tu fais simplement une macro avec l'enregistreur et le tour est joué ... tu tu peux, l'affecter à ton bouton, elle est pas belle la vie ?
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 84
    Points : 37
    Points
    37
    Par défaut
    Ok mais de cette maniere les informations ne seront pas copier comme je veux dans le tableau vide si ?

    Je peux aussi utiliser la fonction xlFilterCopy non ? qui reconnait le nom choisi dans la cllule avec la liste déroulante et m'affiche les données ? Car je ne comprend pas trop votre méthode :/

  6. #6
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut,

    Oui c'est un filtre avancé.
    Pièce jointe 209930

    Si tu veux d'autres info et en plus des exemples VBA :
    http://boisgontierjacques.free.fr/pa...#ExtractionVBA
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 84
    Points : 37
    Points
    37
    Par défaut
    Excusez moi de vous déranger encore je viens d'utiliser ceci que j'ai trouver sur votre lien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
        Sheets("Factures").[A1:H1000].AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=[A1:A2], CopyToRange:=[A5:D5]
    End Sub
    J'arrive bien a copier mais il copie toute la base de donnée et non pas juste le nom sélectionner :/
    Encore merci de votre aide

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 753
    Points : 28 603
    Points
    28 603
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'arrive bien a copier mais il copie toute la base de donnée et non pas juste le nom sélectionner :/
    Cela signifie peut-être que ta zone des critères n'est pas correcte.
    La plage A1:A2 est sur quelle feuille ?
    En VBA, pour éviter tout problème, il est indispensable de préciser la filiation complète des plages de données utilisées (Classeur + feuille + plage de cellules),
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 84
    Points : 37
    Points
    37
    Par défaut
    Bonsoir merci de votre réponse , ma zone de critère correspond a quoi ? je voudrais afficher les données sur une feuille différente. Je vous met le fichier en dessous sa sera plus simple pour vous de voir ce que je veux faire. Je voudrais juste sélectionner dans la liste déroulante le nom et qu'il affiche toutes les informations de celle-ci je vous (de la page Feuil2 a la page infirmiere)
    Merci de votre aide Classeur1.xlsm

  10. #10
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut,
    Tu as deux corrections à faire.
    La première, dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
        Sheets("Feuil2").[A9:Z1000].AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=[H4:H5], CopyToRange:=[A9:Z9]
    End Sub
    Le texte en rouge indique la zone de critère, qui dans ton tableau à la zone avec la liste déroulante.

    Deuxième.
    Comme tu le vois, ta zone de critère est sur deux lignes.
    La première ligne indique sur quelle colonne porte le crière.
    La seconde quelle est la valeur du filtre.
    Donc, tu dois mettre en H4,le nom de la colonne sur laquelle porte le filtre : NOM.
    Pour que cela ne soit pas trop génant, tu peux changer la couleur du texte pour qu'il ne se voit pas
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 84
    Points : 37
    Points
    37
    Par défaut
    Merci de votre réponse rapide je viens de faire les modification que vous m'avez annoncer tout marche sans probleme ! Merci mais j'ai encore un petit probleme normale que les H M et S ne sont pas recopier dans le tableau ?

  12. #12
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut,

    Pour moi, la colonne H fonctionne.

    Pour les colonnes qui sont à coté. Excel entre ta base de données (Feuil2) et ta zone d'extraction (Infirmière) il sait quelles colonnes récupérer en utilisant le nom de la colonne.

    Tu doit donc avoir un en tête de colonne pour chaque colonne. En J, P et V, il y a les intitulés avec les fusions de cellules.
    Pour les autres colonnes Excel ne peut pas deviner ...
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

  13. #13
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Petite parenthèse...
    Si tu veux que le changement s'effectue seulement lors du changement de H5, il faut le spécifier, sinon cette macro va s'enclencher à chaque changement sur la feuille.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address(False, False) = "H5" Then
            Sheets("Feuil2").[A9:Z1000].AdvancedFilter Action:=xlFilterCopy, _
                CriteriaRange:=[H4:H5], CopyToRange:=[A9:Z9]
        End if
    End Sub
    MPi²

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 84
    Points : 37
    Points
    37
    Par défaut
    Merci beaucoup a vous deux tout marche nickel ! encore merci de votre aide

    Excusez moi petite question encore ! QUand je protege la feuille comme par exemple tout les colonne Nom, Prenom etc QUand je modifie le nom dans la liste déroulante j'ai un débogage qui s'affiche une idée ?

  15. #15
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    la plage complète qui reçoit des données issue du filtre avancé est bien déverrouillée ?

    dans tous les cas, plutôt que de tailler ta feuille avec des plages verrouillées ou non (pas toujours pratique et souple), je te conseille, dans ta procédure évènementielle, de faire précéder l'application du filtre d'une dé-protection de la feuille, et d'une nouvelle protection de la feuille juste après.

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 84
    Points : 37
    Points
    37
    Par défaut
    Oula je veux bien mais comment faire ^^ J'ai pas tout compris ^^

  17. #17
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    1) Avant la ligne de code où le filtre avancé est utilisé :déprotéger la feuille
    2) Après la ligne de code où le filtre avancé est utilisé : protéger la feuille

    Pour le point 1, tu as de la chance, il n'y a qu'une ligne de code dans ta procédure, ça devrait être facile de trouver la bonne
    Pour le point 2, tu as aussi de la chance, si t'as trouvé la ligne du point 1, t'as trouvé la ligne d'après


    Avec l'enregistreur de macro, tu simules une protection de feuille et une déprotection
    Tu obtiens tes deux méthodes (pas si mauvaises que ça d'ailleurs, contrairement à l'habitude)
    Tu les places là où il faut et tu testes

    si ça marche pas ou mal, reviens avec ton code ET les deux méthodes pour obtenir de l'aide. Mais tu n'apprendras rien si on te donnes la solution immédiatement, crois-moi

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 84
    Points : 37
    Points
    37
    Par défaut
    BOnjour , désolé de la réponse tardive ! Mais comment integrer les macro au code ?

Discussions similaires

  1. Ouvrir une base de données depuis une autre base
    Par anelinette dans le forum IHM
    Réponses: 3
    Dernier message: 20/05/2010, 13h49
  2. Réponses: 1
    Dernier message: 07/05/2010, 10h09
  3. Réponses: 1
    Dernier message: 07/10/2009, 16h20
  4. Réponses: 1
    Dernier message: 22/07/2009, 17h50
  5. Réponses: 4
    Dernier message: 30/01/2007, 14h42

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