UserForm, remplissage tableau Excel

Bonjour,

Je sèche sur la façon d'injecter les données d'un UserForm dans un tableau Excel au moyen d'un bouton, qui une fois fait, videra et fermera le UserForm.

Idéalement, chaque série de données récoltée dans le USF devrait pouvoir être ajoutée dans la ligne en dessous de la dernière remplie (ou la prochaine ligne vide)

Si quelqu'un a le truc, ce serait sympa ;-)

Je joints un fichier d'essai au cas où, sur lequel j'avais déjà eu un coup de main vraiment top.

Bonne journée,

10help.xlsm (18.54 Ko)

Bonjour

- En premier, supprimez la déclaration col au dessus de tous vos codes (important !)
- Ensuite mettez-la comme ceci dans votre code Private Sub ComboBox1_Change()

Dim col as byte

- Mettez ce code dans l'usf (par défaut j'ai utilisé le bouton 1 existant qui est "fermer")

Private Sub CommandButton1_Click()
Dim col As Byte
Dim lig As Integer

With Sheets("TABLEAU")
    col = WorksheetFunction.Match(ComboBox1.Value, .Rows(1), 0)
    lig = .Cells(Rows.Count, col).End(xlUp).Row + 1
    .Cells(lig, col) = ComboBox2.Value
End With
Unload UserForm1
End Sub

au moyen d'un bouton, qui une fois fait, videra et fermera le UserForm.

Une fois le bouton cliqué, le fait de fermer l'USF elle sera vidée automatiquement

si ok et terminé pensez à

Crdlt


Edit : ne laissez pas de lignes vides dans votre feuille DATA. Supprimez la ligne 2 pour que vos données commencent à cette ligne et non en ligne 3

Merci pour ce code qui fonctionne quand on travaille sur la même feuille

Ma demande manquait de clarté, l'idée est d'utiliser le premier onglet comme alimentation des listes déroulantes et que le résultat des choix dans le USF soit ajouter dans la seconde page (Sheet "DATA" = infos listes déroulantes et sheet "TABLEAU" servant d'arrivée pour les données du USF)

ça doit pas être compliqué mais vu mon niveau ;-)

Merci et bon après-midi

Merci pour ce code qui fonctionne quand on travaille sur la même feuille

C'est à dire

Ma demande manquait de clarté, l'idée est d'utiliser le premier onglet comme alimentation des listes déroulantes et que le résultat des choix dans le USF soit ajouter dans la seconde page (Sheet "DATA" = infos listes déroulantes et sheet "TABLEAU" servant d'arrivée pour les données du USF)

Ben c'est ce que le code fait. Charger l'USF depuis la feuille DATA et une fois les combo remplies, le code envoie sur la feuille Tableau
Le code suppose que les entêtes de colonnes sont identique sur les deux feuilles évidemment
Si vous voulez aussi ajouter les entêtes, il faut revoir le code.

Là je me suis basé sur votre fichier dont les entêtes de colonne sont identiques dans les deux feuilles

Il m'indique une erreur d'exécution '1004'

image

Vous ne répondez pas à mon message... mais je vais répondre à votre question

Il m'indique une erreur d'exécution '1004'

Vous avez une erreur parce que le code ne trouve pas la colonne correspondant à la combo1 en feuille Tableau. Donc deux questions :

1. Vous avez quoi en combobox1 ?
2. Est-ce que la valeur de la combobox1 est présente en ligne 1 de l'onglet TABLEAU ?

C'est tout bon, ça fonctionne, quand j'ai testé l'USF ça a planté et en ouvrant à nouveau Excel, les colonnes se remplissent au bon endroit sur la bonne feuille. j'avais un souci avec les entêtes mais là c'est en ordre.

Merci pour le coup de main et excellent week-end,

Ok. Mais si vous voulez faire un contrôle, voire ajouter une nouvelle colonne avec votre USF c'est aussi possible

Exemple : vous ajoutez une colonne dans votre feuille DATA qui n'est pas dans la feuille TABLEAU
Dans ce cas, utilisez ce code qui ajoutera la colonne en feuille Tableau si elle n'y est pas

Private Sub CommandButton1_Click()
Dim col As Byte, dcol As Byte
Dim lig As Integer

With Sheets("TABLEAU")
    On Error Resume Next
    col = WorksheetFunction.Match(ComboBox1.Value, .Rows(1), 0)
    If col = 0 Then
        col = .Cells(1, Columns.Count).End(xlToLeft).Column + 1
        .Cells(1, col) = ComboBox1.Value
    End If
    lig = .Cells(Rows.Count, col).End(xlUp).Row + 1
    .Cells(lig, col) = ComboBox2.Value
End With
Unload UserForm1
End Sub

Crdlt

Rechercher des sujets similaires à "userform remplissage tableau"