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 coller à partir d'une listbox [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut Copier coller à partir d'une listbox
    Bonjour,

    J'ai créé un userform dans laquelel j'ai inséré une combobox. Dans les propriétés j'ai sélectionné rowsource: accueil!J2 : P100.
    Les informations du tabeau J2 : P100

    Je souhaiterai savoir comment faire pour que lorsque j'appuie sur une ligne dans ma combo box par exemple la ligne correspondant à J5 : P5 Celle ci ce copie à la 1er ligne vide du tableau situé sur la feuille "accueil" en B26 : G35

    Pour aller à la 1er ligne vide du tableau j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim numlignevide As Integer
    numlignevide = ActiveSheet.Columns(1).Find("").Row(26)
    J'ai parcouru tous les tuto possibles avant de venir vers vous du coup un peu daide ne serai pas de refus mais si vous connaissez un tuto qui soit clair et puisse répondre à mon problème pour que je fasse le code par moi même j'en serai ravi aussi

    Cordialement

  2. #2
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut
    Bonjour,

    premièrement pour la première vide d'un tableau enlever le (26)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim numlignevide As Integer
    numlignevide = ActiveSheet.Columns(1).Find("").Row
    Citation Envoyé par nicdodo Voir le message
    si vous connaissez un tuto qui soit clair et puisse répondre à mon problème pour que je fasse le code par moi même j'en serai ravi aussi
    Avez-vous essayé l'enregistreur de macro ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut
    L'enregistreur de macro ne fonctionne pas dans un cas comme celui la. Ensuite pour le numlignevide je met 26 apres row car je veux qu'il commence à copier à la premiere ligne vide à partir de la ligne 26

  4. #4
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut
    Citation Envoyé par nicdodo Voir le message
    Je souhaiterai savoir comment faire pour que lorsque j'appuie sur une ligne dans ma combo box par exemple la ligne correspondant à J5 : P5 Celle ci ce copie à la 1er ligne vide du tableau situé sur la feuille "accueil" en B26 : G35
    Bonjour,
    Vous dites de vouloir faire le code par vous même
    l'enregistreur de macro peut vous aider.
    C'est certain que vous ne pourrez avoir exactement ce que vous voulez, mais en gros
    l'enregistreur de macro vous montre comment faire certain code.


    exemple:
    si c'est le code du copier coller que vous ne savez pas, alors avec
    l'enregistreur de macro vous pourrez voir quel code il génère, puis l'adapter le à votre macro.


    sur quoi vous bloquez exactement ?
    Est-ce de récupérer la bonne ligne excel quand vous choisissez un option dans le combobox

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut
    En fait la combo box est dans une form d'ou l'impossibilité d'utiliser l'enregistreur de macro

    pour le copier coller l'enregistreur sort un truc du genre sheets("xx").select etc et les selections ne sont pas tres utiles. En fait j'ai tous pour les actions

    copier coller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim numlignevide As Integer
    numlignevide = ActiveSheet.Columns(1).Find("").Row(26)
     
    Sheets("accueil").Cells(numlignevide, 1).Value = Sheets("acceuil").Cells(10, 2).Value
    Le truc c'est est ce que je peux faire quelque chose du genre?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("accueil").Cells(numlignevide, 1).Value = combobox etc
    Ça par exemple c'est exactement ce que je ne sais pas faire. copier à partir de la combo box

  6. #6
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut
    Bonjour,

    il faut l'évenement Combobox_Change


    si votre combobox s'appelle ComboBox1 alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ComboBox1_Change()
     
        Sheets("accueil").Cells(numlignevide, 1).Value = combobox1.text
     
    End Sub

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut
    Merci je pense que c'est exactement ce dont j'ai besoin dans l'idée. Seulement le debug me dit qu'il y'a un problème sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    numlignevide = ActiveSheet.Columns(1).Find("").Row(26)
    et voici le code en entier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub ComboBox1_Change
    Dim numlignevide As Integer
    numlignevide = ActiveSheet.Columns(1).Find("").Row(26)
     
    Sheets("accueil").Cells(numlignevide, 1).Value = ComboBox1.Text
    numlignevide = numlignevide + 1
     
    End Sub
    Alors peut etre il faudrait que je procède en deux étapes avec d'abord la ligne que je choisit dans la combo box qui se sélectionne et ensuite en appuyant sur le bouton nommé "cmd_bouton_ok" et du coup faire un deuxième code. Je sais pas trop en fait j'essaye par rapport rapport à ce que jai pu voir ou essayer de comprendre mais je sais que je n'y arrive pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private sub ComboBox1_Change()
     
    'action pour que la ligne sélectionnée s'affiche dans la combobox'
     
    end sub
     
    sub ok_click()
    Dim numlignevide As Integer
    numlignevide = ActiveSheet.Columns(1).Find("").Row(26)
     
    Sheets("accueil").Cells(numlignevide, 1).Value = ComboBox1.Text
    numlignevide = numlignevide + 1
    End Sub

  8. #8
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub ComboBox1_Change
     
    For numlignevide = 26 To Range("A" & Rows.Count).End(xlUp).Row
        If Cells(numlignevide , 1) = "" Then
            Exit For
        End If
    Next
     
    Sheets("accueil").Cells(numlignevide, 1).Value = ComboBox1.Text
     
     
    End Sub

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut
    Ça ne marche pas, quand j'appuis sur la flèche de ma combo box j'ai les informations de ma plages et lorsque j'appuie sur la ligne voulu celle ci ne s'affiche pas dans la combo box, la ligne reste blanche comme si l'information n'était pas selectionné

  10. #10
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut
    Citation Envoyé par nicdodo Voir le message
    Ça ne marche pas, quand j'appuis sur la flèche de ma combo box j'ai les informations de ma plages et lorsque j'appuie sur la ligne voulu celle ci ne s'affiche pas dans la combo box, la ligne reste blanche comme si l'information n'était pas selectionné
    pouvez-vous poster votre code svp

  11. #11
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut
    Ben justement je n'ai pas de code puisque je n'y arrive pas. Alors j'ai continué à chercher et je suis tombé sur le tuto de dévellopez.net mais je n'y suis pas plus arrivé. Alors je pense que je vais en fait plutôt partir sur une listbox, les propriétés sont les suivantes, rowsource: accueil!J2: P100, column count: 7, columnhead: true, name: listbox1

    Cette listbox est dans un userform (userform1) et il y'a un bouton "ok"

    Mon but est juste de sélectionner la ligne dans ma listbox et quand appuyant sur "ok" les infos des 7 colonnes (J a P) de la même ligne se copient et se collent sur la même feuille mais dans un tableau dont le format est "A26:G35" et que les infos aillent à la première ligne vide dans ce tableau. En plus de ça il faudrait que lorsque cela fonctionne je puisse retourner sur mon userform1 et sélectionner une nouvelle ligne dans ma listbox et qu'elle se copie colle à la suite de ma première ligne dans mon tableau "A26:G35"
    En gros je comprends pas du tout comment ça marche et ca me bloque pour finaliser mon petit programme.

    J'ai vraiment besoin d'aide s'il vous plait, je ne fais pas preuve de mauvaise volonté juste aucun tuto n'est assez clair pour un débutant

  12. #12
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut
    Bonjour,
    en prenant pour acquis que votre listbox est remplie
    mettre ce code dans votre bouton ok
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        For numlignevide = 26 To Range("A" & Rows.Count).End(xlUp).Row
            If Cells(numlignevide, 1) = "" Then
                Exit For
            End If
        Next
     
        For i = 1 To 7
            Sheets("accueil").Cells(numlignevide, i).Value = Me.ListBox1.List(ListBox1.ListIndex, i - 1)
        Next

  13. #13
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut
    C'est super ça marche nikel, il y'a juste un dernier petit detail, une fois que j'ai copier ma ligne dans mon tableau, si je retourne dans ma listbox et que je sélectionne une autre ligne celle ci remplace la précedente dans mon tableau au lieu de s'afficher en dessous. J'ai essayé en ajoutant numlignevide=numlignevide+1 mais ça ne marche pas.

    Merci pour votre reponse elle tombe à pique j'étais en train de lier les colonnes de ma listbox a 7 textbox pour qu'en appuyant sur ok les textbox se copie colle dans mon tableau

  14. #14
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut
    Pouvez-vous poster le code en entier svp

  15. #15
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut
    j'ai copier coller celui que vous m'avez fourni. PS les textbox ne servent qu'a assurer l'utilisateur de son choix elles n'ont et n'auront pas de fonctions particulières

    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
     
    Private Sub CommandButton1_Click()
    For numlignevide = 26 To Range("A" & Rows.Count).End(xlUp).Row
            If Cells(numlignevide, 1) = "" Then
                Exit For
            End If
        Next
     
        For i = 1 To 7
            Sheets("accueil").Cells(numlignevide, i).Value = Me.ListBox1.List(ListBox1.ListIndex, i - 1)
        Next
    frmselection.Hide
    End Sub
     
     
    Private Sub ListBox1_Click()
      With ListBox1
        TextBox1 = .List(.ListIndex, 0)
        TextBox2 = .List(.ListIndex, 1)
        TextBox3 = .List(.ListIndex, 2)
        TextBox4 = .List(.ListIndex, 3)
        TextBox5 = .List(.ListIndex, 4)
        TextBox6 = .List(.ListIndex, 5)
        TextBox7 = .List(.ListIndex, 6)
     
      End With
    End Sub

  16. #16
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut
    avec ce que je voie, il est impossible que la 2e sélection remplace la première.
    pouvez-vous mettre votre fichier en pièce jointe

  17. #17
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut
    Désolé j'ai mis un peu de temps car je faisais le fichier sans le reste des boutons, il suffit de cliquer sur la flèche pour accéder à l'userform. Merci encore pour votre aide
    Fichiers attachés Fichiers attachés

  18. #18
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut
    C'est normal tu ne met rien dans la colonne A
    don il faut vérifier dans la colonne C
    alors essayer comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CommandButton1_Click()
    For numlignevide = 26 To Range("C" & Rows.Count).End(xlUp).Row
            If Cells(numlignevide, 3) = "" Then
                Exit For
            End If
        Next
     
        For i = 1 To 7
            Sheets("accueil").Cells(numlignevide, i).Value = Me.ListBox1.List(ListBox1.ListIndex, i - 1)
        Next
    frmselection.Hide
    End Sub

  19. #19
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut
    Génialissime, ca marche au top, merci encore pour votre aide et votre temps.

    Cordialement

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/05/2015, 10h44
  2. Copier/coller à partir d'une liste avec ligne vide
    Par biobill dans le forum Excel
    Réponses: 3
    Dernier message: 11/02/2015, 10h13
  3. impossible de copier coller à partir d'une applet
    Par sof1980 dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 20/10/2006, 15h58
  4. [VBA-A]récuperation de champs à partir d'une listbox
    Par jouf dans le forum VBA Access
    Réponses: 10
    Dernier message: 05/04/2006, 15h43
  5. Réponses: 5
    Dernier message: 05/04/2006, 12h23

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