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 :

Ajout de valeur dans un tableau [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 49
    Par défaut Ajout de valeur dans un tableau
    Bonjour ,

    Je vous expose aujourd'hui mon problèmes sur mon UserForm , tout d'abord je vous expose la partie de mon projet qui me pose problème . Je désire dans le tableau ci dessous saisie dans les textbox et combobox différentes informations ( N°Article , Designation , Lot , ect ... ) .
    Le fonctionnement des saisie est le suivant :

    Nom : 656861Capture.png
Affichages : 211
Taille : 44,0 Ko

    Le N°Article ( PF25616) nous renvoie directement la Désignation dans la case de droite lors de la saisie(S) du N°Article dans la liste . Le Numéro du Lot ( 845F545) , L'unité (PAL3) et la Quantité (23) sont également saisie (S) par l'utilisateur . Jusque là aucun problèmes tout fonctionne bien . Là où cela ce corse est lorsque je veut ajouter le tout dans le tableau du dessous en appuyant sur le bouton Add , j'ai essayer de nombreuse chose en vin , je vous met à disposition mon code ainsi que mon fichier excel pour les personne étant d'accord pour m'aiguiller sur la marche à suivre sachant que je veut pouvoir ajouter au maximum 10 lignes en dessous .
    En vous remerciant d'avance , Surinox
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    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 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    voici une proposition
    elle nécessite de ne pas utiliser le remplissage de ta listbox par l'instruction "RowSource"

    il faut donc supprimer de ta procédure d'initialisation, la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox1.RowSource = "Tableau1"
    code à mettre dans le bouton ADD :
    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
    Private Sub CommandButtonArticle_Click()
    Dim ListeCtrl()
     
    With Me
        ' les valeurs de tes contrôles
        ListeCtrl = Array(.Cbo_Article.Text, .TextBoxDesign.Text, .TextBoxLot.Text, .Cbo_unite.Text, .TextBoxQuantite.Text)
        With .ListBox1
            ' ajoute d'une ligne
            .AddItem
            'remplissage des 5 colonnes
            For i = LBound(ListeCtrl) To UBound(ListeCtrl)
                .List(.ListCount - 1, i) = ListeCtrl(i)
            Next i
        End With
    End With
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 49
    Par défaut
    Tout d'abord merci de ta réponse si rapide !

    Donc le problèmes est que le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox1.RowSource = "Tableau1"

    Me permet d'afficher le nom des colonnes sur l'userform
    Me permet de récupérer dans un tableau excel toute les info que je saisie .


    Donc je ne peut pas l'enlever dans la mesure où je doit récuperer le tout par la suite , il n'y à pas possibiliter de le garder ? :\

    Mais sinon dans le fond c'est exactement ça que je voudrais faire

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    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 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    ma proposition n'est pas compatible, car remplir les headers imposent l'utilisation de RowSource

    on peut modifier ton initialisation ainsi :

    - on récupère uniquement les titres et on les met dans des labels juste au dessus de ton listbox
    ce qui évite d'utiliser les headers

    ensuite :

    - le remplissage du tableau dans excel peut s'effectuer à un autre moment, à toi de me dire le moment où ça serait le plus opportun


    si tu ne souhaites pas changer de structure, il faut réfléchir autrement ta mécanique car tu ne peux pas ajouter des lignes dans ta listbox :

    - au clic sur le bouton add, ça ajoute les données directement dans ton tableau excel
    - ensuite, rafraichir le userform pour que les données apparaissent

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 49
    Par défaut
    Je veut en fait ajouter toute mes lignes et ensuite quand la personne à terminer elle clique sur valider donc l’idéal serrait sur le bouton valider au début non ?

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    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 169
    Billets dans le blog
    5
    Par défaut
    Si j'ai bien compris :

    1) on met un label pour les titres des colonne
    2) on rempli la listbox à convenance, en appuyant à chaque fois sur le bouton ADD
    3) quand on a fini de remplir la listbox, on clique sur un bouton VALIDER qui va écrire les données du listbox dans ton tableau ?


    est-ce que le tableau sera toujours vide à l'étape 1, ou il contient déjà des données qui (avec le temps) augmenteront ?

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 49
    Par défaut
    Oui c'est exactement ça

    J'oublier oui à l'étape 1 le tableau serra toujours vide !

  8. #8
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    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 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    voilà ce que j'ai fait :

    - j'ai ajouté 5 label juste au dessus de ta listbox pour afficher les titres
    - les labels s'appellent Label1,Label2....Label5

    Code de l'initialisation du formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Userform_Initialize()
     
        TextBoxRemorque.MaxLength = 3 'Limite à 3 le nombre de valeur pour le N° de remorque
        ListBox1.ColumnCount = 5 ' On donne le nombre de colonne du tableau
     
        ' remplissage des titres dans les labels
        With Feuil3.ListObjects(1)
            For i = 1 To .ListColumns.Count
                Me.Controls("Label" & i).Caption = .HeaderRowRange(1, i)
            Next i
        End With
     
    End Sub
    Code du bouton ADD
    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
    Private Sub CommandButtonArticle_Click()
    Dim ListeCtrl()
     
    With Me
        ' les valeurs de tes contrôles
        ListeCtrl = Array(.Cbo_Article, .TextBoxDesign, .TextBoxLot, .Cbo_unite, .TextBoxQuantite)
        With .ListBox1
            ' ajout d'une ligne
            .AddItem
            'remplissage des 5 colonnes
            For i = LBound(ListeCtrl) To UBound(ListeCtrl)
                .List(.ListCount - 1, i) = ListeCtrl(i).Text
                ListeCtrl(i).Text = ""
            Next i
        End With
    End With
     
    End Sub
    Concernant le transfert vers le tableau, c'est avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub ButtonValider_Click() 'Lorsqu'on clique sur le bouton valider
     
    For i = 1 To Me.ListBox1.ListCount
        For j = 1 To 5
            With Feuil3.ListObjects(1)
                .Range(.DataBodyRange.Rows.Count + i, j) = Me.ListBox1.List(i - 1, j - 1)
            End With
        Next j
    Next i
     
    Me.ListBox1.Clear
    Exit Sub
    étant donné que cette procédure contient pas mal de code que je n'ai pas épluché, j'ai utilisé un exit sub pour simplement tester le remplissage du tableau

    je te laisse adapter tout ça

  9. #9
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 49
    Par défaut
    Salut !

    Tout d'abord merci pour ton aide !

    Donc j'ai tester le code et j'ai un soucis au niveau de l'ajout des lignes , tout marche sauf la désignation qui ne s'intégre pas dans la ligne j'ai essayer de regarder en debugant et au moment de l'ajout de désignation je ne comprend pas vraiment ce qu'il fait .

    Comme tu le vois sur le screen suivant la désignation n’apparaît pas sur le tableau alors que dans le champ de saisie il apparaît bien quand je sélectionne le N°Article .


    Nom : 509232Capture.png
Affichages : 167
Taille : 45,3 Ko




    Ensuite quand je clique sur valider des choses s'affiche dans le tableau excel mais pas du tout comme je le voulais :

    Nom : 356720Capture3.png
Affichages : 185
Taille : 13,6 Ko


    , déjà j’aurais voulue que cela se mettent dans l'ordre et que cela commence à la ligne 2 et non en création de nouvelle ligne et ainsi de suite et si une ligne est vide dans le tableau ListBox ne pas la copier sur le tableau excel Je ne sais pas si j'ai réussie à me faire comprendre .

    En gros je voudrais pouvoir remplir uniquement ce tableau là sans ligne en plus :

    Nom : 731957Capture2.png
Affichages : 200
Taille : 8,5 Ko

  10. #10
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 49
    Par défaut
    J'ai régler le problèmes des lignes qui ne se mettent pas dans le bonne ordre dans le tableau voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    For i = 1 To Me.ListBox1.ListCount
     
     
        For j = 1 To 5
            With Feuil3.ListObjects(1)
                Sheets("Feuil3").Cells(i + 1, j).Value = Me.ListBox1.List(i - 1, j - 1) ' On copie les ligne dans le tableau
            End With
        Next j
    Next i
     
    Me.ListBox1.Clearb

    Par contre j'ai toujours le problèmes du Désignation qui ne veut pas apparaître dans le tableau de l'userForm quand je fait ajouter et j'ai beau faire un debugage et tester des chose je n'arrive pas à trouver :\


    Edit :

    Aprés avoir refait le debugage , en fait aprés avoir mis le N°Article , au lieux d'aller dans Next i il part dans ce code là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Cbo_Article_change()
     
        Valeur_Cherchee2 = Cbo_Article.Value ' On definie l'Article à chercher
     
        Set PlageDeRecherche2 = Sheets(1).Columns(6) ' On definie la plage de recherche
     
        Set Trouve2 = PlageDeRecherche2.Cells.Find(What:=Valeur_Cherchee2, LookAt:=xlWhole) ' On cherche le N°Article selectionner
     
        TextBoxDesign.Value = Sheets(1).Cells(Trouve2.Row, 7).Value 'On assigne le nom du site (designation )
     
     
    End Sub
    qui me permet de récuperer lors de la saisie du N°article , la désignation qui est dans un tableau .
    Il me parcours de code deux fois la première sa ne change rien , et la seconde le N°Article disparait du coup il ne trouve rien d'où le fait que je n'ai rien qui apparait dans ma case .
    Du coup je ne sais pas comment corriger ce problèmes , un petit peu d'aide me serrait très utile :B .

  11. #11
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    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 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    je vais regarder plus en détail ce soir, je manque de temps suffisant aujourd'hui

    y'a rien de bien méchant apparemment, ça réglé ce soir t'inquiète pas

  12. #12
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 49
    Par défaut
    Pas de soucis je n'ai que sa à faire donc je continue de chercher de mon coter merci encore

  13. #13
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 49
    Par défaut
    Problèmes résolue , merci !

  14. #14
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    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 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    ah super, je venais justement te poster ce que j'avais vu

    tes contrôles n'étaient plus nommés comme dans tes procédures évènementielles, ce qui empêchait par exemple la mise à jour automatique de ton TextBox quand tu choisissais un article dans ton menu déroulant

  15. #15
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 49
    Par défaut
    Oui c'était ça , par contre je voudrais essayer pour le coup de permettre de supprimer une ligne , par exemple dans un combo box la personne choisie le N° de ligne à supprimer en cas d'erreur et clique sur un bouton pour la supprimer c'est possible de le faire ?

  16. #16
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    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 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    peux-tu joindre une copie du fichier fonctionnel sur notre problème résolu
    et contenant bien sûr les contrôles qui te permettraient de supprimer une ligne ?


    j'ai écrasé ton fichier par erreur tout à l'heure, en le remplaçant par ta toute première version ... et j'ai pas vraiment le courage de tout remodifier

  17. #17
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 49
    Par défaut
    J'ai réussie à trouver comment supprimer une ligne , il suffit juste de cliquer sur la ligne à supprimer et de cliquer sur mon bouton "Supprimer"
    J'ajoute le fichier de suite
    Fichiers attachés Fichiers attachés

  18. #18
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    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 169
    Billets dans le blog
    5
    Par défaut
    Du coup t'as résolu ton problème ?
    je n'ai plus besoin de consulter le fichier

  19. #19
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 49
    Par défaut
    Oui problèmes résolue ( je penser que tu voulais le voir c'est pour ça x) )
    Merci encore !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/06/2015, 12h14
  2. [WD18] Ajouter des valeurs dans un tableau simple
    Par olihop dans le forum WinDev
    Réponses: 2
    Dernier message: 18/11/2014, 12h23
  3. Ajouter une valeur dans un tableau au clic
    Par schtroll dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 17/12/2012, 14h35
  4. Ajouter des valeurs dans un tableau
    Par Mrlaurent90 dans le forum BIRT
    Réponses: 4
    Dernier message: 09/03/2011, 11h55
  5. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 14h41

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