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 des valeurs d'une combobox avec plusieurs colonnes [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 28
    Par défaut Copier des valeurs d'une combobox avec plusieurs colonnes
    Bonjour à tous,
    Je reviens vers vous car je bloque depuis un moment sur une commande.
    Je possède plusieurs combobox ayant plusieurs colonnes et je cherche comment faire pour coller plusieurs valeurs de ma combobox (sur 6 colonnes)en même temps sur une plage de cellule que je définis comme la range (AH2:AS2) par exemple.
    J'avais trouvé cette solution mais je n'arrive pas à l'utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ComboBox1_Change()
     
    With ComboBox1
      .Text = .Column(0, .ListIndex) & " " & .Column(1, .ListIndex)
    End With
    End Sub
    Merci d'avance !

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 412
    Par défaut
    Bonjour,

    Je n'ai pas vraiment saisi la question mais je remarque que AH2:AS2 prend 12 colonnes alors que la combobox n'en aurait que 6.

    Cordialement.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 28
    Par défaut
    Salut Eric,
    Déjà merci pour ta réponse.
    Alors je possède des combobox à plusieurs colonnes comme dit précédemment, et j'aimerai pouvoir choisir toute une ligne avec donc les 6 valeurs que je pourrai mettre sur une rangée, exemple première colonne il y "chaudiere", deuxième vide, troisième "1", ainsi de suite jusqu'à la sixième colonne...
    Oui c'est parce que les combobox seront à 12 colonnes plus tard mais il faudrait déjà que j'arrive ma manip avant cela
    J'essaye d'être claire n'hésite pas pour plus d'info.

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 412
    Par défaut
    Bonjour,

    Quelque chose de ce genre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ComboBox1_Change()
        Dim rC As Range
        ThisWorkbook.Worksheets("Test").Select
        Set rC = Range("B2")
        rC.Value = ComboBox1.Column(0)
        rC.Offset(0, 1) = ComboBox1.Column(1)
        rC.Offset(0, 2) = ComboBox1.Column(2)
        '--- etc.
        Set rC = Nothing
    End Sub
    Cordialement.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 28
    Par défaut
    C'est exactement ça je cherche depuis des jours j'étais au bout au grand MERCI à toi vraiment
    Bonne journée.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 28
    Par défaut
    Alors je rencontre un autre problème, c'est que j'ai arrangé pour mon code mais j'ai une erreur.
    J'ai modifié la propriété de ma liste pour qu'elle puisse avoir 12 colonnes, j'ai donc fais ceci :

    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
    Dim rC As Range
        ThisWorkbook.Worksheets("LP").Select
        Set rC = Range("AH2")
        rC.Value = List_actionneur.Column(0)
        rC.Offset(0, 1) = List_actionneur.Column(1)
        rC.Offset(0, 2) = List_actionneur.Column(2)
        rC.Offset(0, 3) = List_actionneur.Column(3)
        rC.Offset(0, 4) = List_actionneur.Column(4)
        rC.Offset(0, 5) = List_actionneur.Column(5)
        rC.Offset(0, 6) = List_actionneur.Column(6)   ' erreur ici
        rC.Offset(0, 7) = List_actionneur.Column(7)
        rC.Offset(0, 8) = List_actionneur.Column(8)
        rC.Offset(0, 9) = List_actionneur.Column(9)
        rC.Offset(0, 10) = List_actionneur.Column(10)
        rC.Offset(0, 11) = List_actionneur.Column(11)
        rC.Offset(0, 12) = List_actionneur.Column(12)
        Set rC = Nothing
    Et j'ai une erreur qui me dit "Impossible de lire la propriete column. Argument non valide".
    Saurais-tu pour qu'elle raison ?

  7. #7
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Je ne vois pas comment DECALER pourrait multiplier les items dans les listes.

    Peux-tu remettre ton fichier actuel?
    "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
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    J'explique son fonctionnement dans ce message...

    A partir de B1, tu décales de 1 ligne vers le bas et de 0 colonnes => B2. La plage renvoyée par DECALER aura un nombre de lignes équivalent au nombre de valeurs de la colonne B - 1 (l'entête) (NBVAL($b:$b)) et aura 12 colonnes.

    Tu peux utiliser l'audit de formule, dont je parle dans ce billet de blog pour comprendre pas à pas comment DECALER renvoie la plage.


    Cela dit, je ne comprends pas ce que tu veux dire lorsque tu dis "ma base de données se répète en boucle" ^^
    "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...
    ---------------

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 28
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Cela dit, je ne comprends pas ce que tu veux dire lorsque tu dis "ma base de données se répète en boucle" ^^
    D'accord je comprend mieux mtn.
    Et bien dans mes listes j'ai effectivement mes équipements mais tous en plusieurs exemplaire, par exemple j'ai "chaudière" au moin 5 fois.
    Autre pb quand je choisis un équipement il s'écrit 50 fois dans la liste.

    Voilà tu sais tout mtn :'(

  10. #10
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    il faut travailler avec un tableau structuré. Ce serait bien plus simple pour transférer les données, et pour gérer ton projet d'une manière générale.

    Un combobox numérote ses colonnes à partir de 0: 0 =>12 = 13 colonnes Si l'erreur survient lorsque tu essaies de manipuler List_actionneur.Column(6), c'est que ton combo contient 6 colonnes (de 0 à 5).


    Pourrais-tu expliquer un peu plus en détails ce que tu cherches à réaliser?
    "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
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Ce n'est pas DECALER qui pose problème, mais ta macro évènementielle List_actionneur_Click qui est appelée plusieurs fois. Elle est liée à la cellule AH2 et elle s'appuie sur une plage. Ce n'est pas la vocation d'un combobox Activex, et la liaison d'un combobox activex à une plage amène son lot de problèmes et d'instabilité. Perso, j'appuierais la combobox sur les valeurs de la plage Act, par exemple à l'activation de la feuil6.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Activate()
      List_Actionneur.List = Feuil2.Range("act").Value
    End Sub

    Je ne comprends pas très bien la logique de ton code, ceci dit.

    Perso, je rechercherais la ligne sélectionnée dans la "table" des actionneurs et je transfèrerais simplement la ligne, avec mise en forme s'il le faut par la suite. En se souvenant que les combobox commencent la numérotation des lignes à 0, je pense que le code suivant se lit et se comprend facilement. Perso, je travaillerais avec des plages nommées pour découpler au maximum le code des positions des cellules dans les feuilles.

    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 List_actionneur_Click()
      Dim r As Long
      Dim Source As Range, Target As Range
     
      r = List_Actionneur.ListIndex + 1
      Set Source = Feuil2.Range("act")(r, 1).Resize(1, 12)
      If Feuil6.Range("d8") = "" Then
        Set Target = Feuil6.Range("d8")
      Else
        Set Target = Feuil6.Range("d7").End(xlDown)(2)
      End If
      Set Target = Target.Resize(1, 12)
      Target.Value = Source.Value
    End Sub
    "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...
    ---------------

  12. #12
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 28
    Par défaut
    j'avais déjà pensé à faire cela mais dans le code tu fais 1 par 1 les équipements ?
    Comment tu lies le choix de la liste avec la base de donnée ?
    J'avais tenter avec une fonction find mais sans succès, c'est pour cela que je suis partie sur ce principe de liste à plusieurs colonnes.

  13. #13
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Quand on est débutant, c'est le bon moment pour apprendre les bonnes techniques plutôt que les mauvaises, non? Quand on est débutant, on manipule des combobox et on transfère des données dans Excel par VBA?

    Tu es bien conscient que le code que tu donnes va toujours placer tes données sur la ligne 2? Tu dis dans ton message initial "AH2:AS2 par exemple). Je suppose qu'après ce sera AH3:AS3, puis AH4:AS4, etc...

    Un tableau structuré est simple à prendre en main et clarifie très nettement ton code (voir mon tuto sur les tableaux structurés). Il découple ton code de positions rigides et hardcodées (références fixées une fois pour toutes dans ton code) qui font que la moindre modification structurelle de ta feuille Excel est potentiellement accidentogène.

    Si tu disais ce que tu cherches à réaliser/apprendre? On pourrait t'aiguiller vers les meilleurs techniques.
    "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...
    ---------------

  14. #14
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 28
    Par défaut
    Alors j'ai en tout 4 combobox :"List_install", "List_actionneur", "List_capteur" et "List_gene".
    Ce que je fais c'est que je choisis d'abord mon installation dans "List_install", puis je choisis soit un capteurs, soit un actionneurs soit une généralités, une fois choisit ça me colle mon installation dans mon tableau colonne installation et le reste dans les autres colonnes.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    i = 8
    While Cells(i, 4).Value <> ""
        i = i + 1
    Wend
     
    While Cells(i, 5).Value <> ""
        i = i + 1
    Wend
        Cells(i, 4).Value = Range("AH1").Value
        Range("AH2:AS2").Select
        Selection.Copy
        Cells(i, 5).Select
        Sheets("LP").Paste
    Et j'avais donc ajouté le code d'Eric au dessus, donc je ne sais pas si un tableau peut répondre à mes attentes ?

  15. #15
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 28
    Par défaut
    J'ai besoin de renvoyé les données dans mon tableau car on doit choisir un éléments des liste et ça doit être visible directement.
    Ensuite mes listes utilisent chacune une base de donnée différente, j'ai créer une feuille pour chaque donc une feuille installation, une autre actionneurs, etc..
    Le principe général c'est de pouvoir remplir ce tableau avec mon panneau de commande sur le côté
    Nom : Capture.PNG
Affichages : 126
Taille : 64,9 Ko

  16. #16
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 28
    Par défaut
    Je ne possède pas de userform, je n'arrive pas à joindre mon fichier car trop lourd.
    Puis-je vous l'envoyer par mail pour voir ?

  17. #17
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Un tableau structuré peut plus que probablement répondre à tes besoins.

    Pourrais-tu mettre une copie d'écran de la feuille Excel et du userform? A ce stade, le fichier en lien peut être une bonne idée.

    Dans le code que tu viens de donner, point de combobox => c'est pourtant la pierre d'achoppement, me semble-t-il. Il est donc raisonnable pour nous d'attendre que tu donnes le code qui utilise la (les) combobox qui posent problème...

    "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...
    ---------------

  18. #18
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Je ne vois pas les colonnes du tableau qui correspondent à Actionneurs et autres combobox... mais on avance.

    Déjà, basiquement, je me passerais de VBA et je mettrais des listes de validation dans les colonnes du tableau structuré qui s'appuient sur les tables annexes. Éventuellement, un bouton permet d'arriver sur une nouvelle ligne du tableau.

    Si vraiment on veut passer par ton cadre de saisie, pourquoi pas. Perso, là encore, je privilégierais les listes de validation dans les cellules, et un simple transfert de données de ce "formulaire" dans le tableau structuré.


    Si vraiment tu veux passer par des contrôles, il faut préciser si ce sont des combobox de formulaire ou des activex
    "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...
    ---------------

  19. #19
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 28
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Je ne vois pas les colonnes du tableau qui correspondent à Actionneurs et autres combobox... mais on avance.
    Si vraiment on veut passer par ton cadre de saisie, pourquoi pas. Perso, là encore, je privilégierais les listes de validation dans les cellules, et un simple transfert de données de ce "formulaire" dans le tableau structuré.
    Si vraiment tu veux passer par des contrôles, il faut préciser si ce sont des combobox de formulaire ou des activex

    Oui pardon je n'ai pas précisé que actionneurs, capteurs et généralités se trouvaient dans équipements.
    Oui c'est mon tuteur qui m'a demandé de faire comme ceci, structure était plus ou moin imposé.
    Ce sont des activex.

    Et dans ce tableau les intervenants pourront ajouter un équipements dans les bases de données quand ils le veulent et il s'ajoutera directement à la liste.
    Ensuite ils peuvent aussi insérer une ligne où ils le veulent dans le tableau et l'équipements s'ajoutera automatiquement sur la ligne vide, sinon à la suite.

  20. #20
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Si on part sur un formulaire "cellules", voici un exemple avec quelques lignes de code

    Au départ, on crée les tableaux structurés (t_Données pour les données finales et les tableaux qui vont alimenter les listes de validation). Je les mets ici sur la même feuille, mais on veillera par la suite à les placer sur des feuilles séparées.

    On crée quelques cellules nommées (une par "case" du formulaire, et une pour toutes les cellules de saisie du formulaire).
    On crée les listes de validation sur base des tableaux.

    Nom : 2021-06-03_154536.png
Affichages : 136
Taille : 37,8 Ko

    Le code est ultra compact pour ajouter une ligne au tableau. Tu remarques que nulle part on ne parles de feuille ou de cellule Ah2 ou autre. Si on ajoute des colonnes, il suffit de compléter l'array. L'ordre des paires n'a pas d'importance...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub AddValues()
      Dim r As Long
      Dim Map
      Dim i As Long
     
      Map = VBA.Array("fService", "Service", "fType", "Type", "fMontant", "Valeur")
      r = Range("t_Données").ListObject.ListRows.Add.Index
      For i = 0 To UBound(Map) Step 2
        Range("t_données[" & Map(i + 1) & "]")(r).Value = Range(Map(i)).Value
      Next i
      Range("Formulaire").ClearContents
    End Sub
    FormulaireSaisie.xlsm
    "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...
    ---------------

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. copier des valeurs d'une table
    Par kensem dans le forum Développement
    Réponses: 11
    Dernier message: 08/02/2011, 15h28
  2. [XL-2003] copier des valeur d'une ligne selectionnées
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 12/02/2010, 07h58
  3. [A-03] Comment alimenter une combobox avec plusieurs tables
    Par MichaSarah dans le forum VBA Access
    Réponses: 3
    Dernier message: 15/01/2009, 11h02
  4. ajouter des valeurs dans une ComboBox (zone de liste modifiable)
    Par ghosty04 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/12/2008, 18h11
  5. Réponses: 28
    Dernier message: 07/06/2006, 13h30

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