remplir plusieurs tableux excel en fonction d'un formulaire

aeryne

XLDnaute Junior
Bonsoir
voici le projet qui m'a été demandé par une collègue qui ne connait pas du tout l'informatique: pouvoir remplir plusieurs tableaux simultanément en ne remplissant qu'une seule fois les données.
les tableaux sont dans plusieurs fichiers excel ou alors il faut choisir la bonne feuille pour un des fichiers.
je ne peux pas vous mettre ce soir les fichiers car j'ai un bug sur ma clé usb.
il faudrait je pense pouvoir avoir un formulaire qui déclencherai des actions en fonction de ce qui a été coché dans les choix.
voici une rapide description de ce dont je me souviens des fichiers.
le fichier 1 sera celui dont dépendra le plus la répartition des informations. il est composé en 4 feuilles. En fonction de l'option choisie les informations remplies (comme le nom, prénom et numéro de dossier) dans le formulaire iront dans un tableau existant qui doit se remplir au fur et à mesure de l'année(et ceci pour chaque fichier, aucune information ne doit être écrasée).
ensuite, en fonction d'autres champs à remplir dans le formulaire, les informations iront soit aussi dans le fichier 2 et le fichier 3 soit uniquement dans le fichier 3. certaines informations ne seront à placer que par exemple dans le fichier 3 ou dans le fichier 2.
je sais que ce n'est pas facile à visualiser sans les fichiers mais j'aimerai savoir si pour vous ce serait faisable à première vue.
la version d'excel qu'utilise ma collègue n'est pas une version récente (ni 2010 ni 2013)
 

Staple1600

XLDnaute Barbatruc
Re : remplir plusieurs tableux excel en fonction d'un formulaire

Re

J'ai fait le test avec ton fichier joint !!
Et ma copie d'écran du message #13 te prouve bien que cela fonctionne, non ?
Tu fais le test sur quel fichier?
Il faut évidemment que le bouton Valider se nomme toujours CommandButton1
C'est toujours le cas sur ton PC?
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : remplir plusieurs tableux excel en fonction d'un formulaire

Re

Dans ce cas, renomme la procédure CommandButton1_Click() avec le nom adéquat.
Ex: si le bouton Valider s'appelle TOTO alors ce sera TOTO_Click()

NB: Je t'encourage à décortiquer ce tuto par exemple (et d'autres encore) avant de te lancer dans la création d'userform
Excel Downloads - Leon 7 VBAJMG
Commences par les bases, et après on reparle de ton projet ;)
 
Dernière édition:

aeryne

XLDnaute Junior
Re : remplir plusieurs tableux excel en fonction d'un formulaire

Sans titre 1.jpg

non il s’appelle CommandButton1 je t'ai mis une copie écran si ca peut aider
 

Pièces jointes

  • Sans titre 1.jpg
    Sans titre 1.jpg
    36 KB · Affichages: 106
  • Sans titre 1.jpg
    Sans titre 1.jpg
    36 KB · Affichages: 78

Staple1600

XLDnaute Barbatruc
Re : remplir plusieurs tableux excel en fonction d'un formulaire

Re

Tout ce que je peux te dire c'est que cela fonctionne sur mon PC
(sauf qu'en test j'affiche directement l'userform depuis VBE avec la feuille à renseigner activer)

Donc désormais ça doit marcher chez toi aussi avec ces modifs et ce mode opératoire
Essaies en supprimant toutes tes données sauf les entêtes et la première ligne de données
(par exemple sur la feuille nommée CC)
Donc la première ligne vide est la 6 (OK?)
Ensuite va sur la feuille Accueil et cliques sur ton bouton pour afficher l'userform
Test OK chez toi?
Avant tout cela remplaces la procédure CommandButton1_Click() par celle-ci
Code:
Private Sub CommandButton1_Click()
Dim NF, dl&
 NF = Array("CC", "LH", "GT", "DA")
With Sheets(NF(Expert))
.Activate
dl = .Cells(Rows.Count, "D").End(xlUp).Row + 1
    .Cells(dl, "A") = TextBox1
    .Cells(dl, "B") = TextBox2
    .Cells(dl, "C") = TextBox3 & " " & TextBox4
    .Cells(dl, "D") = NF(Expert)
    .Cells(dl, "E") = ComboBox1.Value
    .Cells(dl, "F") = IIf(CheckBox1, 1, vbNullString)
    .Cells(dl, "G") = IIf(CheckBox2, 1, vbNullString)
    .Cells(dl, "H") = IIf(CheckBox3, 1, vbNullString)
    .Cells(dl, "I") = IIf(CheckBox5, 1, vbNullString)
    .Cells(dl, "J") = IIf(CheckBox4, 1, vbNullString)
    .Cells(dl, "K") = IIf(CheckBox6, 1, vbNullString)
    .Cells(dl, "L") = ComboBox2.Value
    UserForm1.Hide
    .[A1].Select
End With
End Sub

PS: Tu devrais éviter les cellules fusionnées sur tes lignes d'entêtes, car avec celles-ci, il y aura un problème si le tableau ne contient encore aucune donnée.
 
Dernière édition:

aeryne

XLDnaute Junior
Re : remplir plusieurs tableux excel en fonction d'un formulaire

sur la feuille cc la première ligne vide est la 5 chez moi.
avec ce nouveau code la feuille cc s'affiche (quel que soit l'expert choisi) mais rien n'est copié nul part.
c'est bizarre que ca marche chez toi et pas chez moi.
peux tu m'envoyer ton fichier pour voirsi c'est pas le mien qui a un souci
 

Staple1600

XLDnaute Barbatruc
Re : remplir plusieurs tableux excel en fonction d'un formulaire

Re

J'ai pourtant précisé:
Essaies en supprimant toutes tes données sauf les entêtes et la première ligne de données
Donc la ligne 5 doit contenir des données
C'est donc bien la ligne 6 la première ligne vide.

Essaies encore une fois.

De toute façon, je vais pas tarder à me déconnecter.
 

Staple1600

XLDnaute Barbatruc
Re : remplir plusieurs tableux excel en fonction d'un formulaire

Re


N'oublie pas ce que je t'ai dis à propos des cellules fusionnées
(sinon tu risques d'avoir des surprises)

Je te laisse compulser d'autres tutos sur les userforms.

Quand à mon code (avec l'aide de la touche F1 et du net, tu devrais comprendre son fonctionnement)

Sur ce, je me "log off".
 

Staple1600

XLDnaute Barbatruc
Re : remplir plusieurs tableux excel en fonction d'un formulaire

Re

Je viens de voir que tes entêtes n'étaient dans les mêmes colonnes sur toutes les feuilles ...
(Remarque en L ou K selon les feuilles par exemple ...)
Essayes déjà de normaliser ton classeur
puis essayes avec cette dernière modif (test OK chez moi)
Et cette fois, je déconnecte pour de bon ;)
Code:
Private Sub CommandButton1_Click()
Dim NF, dl&
 NF = Array("CC", "LH", "GT", "DA")
With Sheets(NF(Expert))
.Activate
dl = .Cells(Rows.Count, "D").End(xlUp).Row + 1
    .Cells(dl, "A") = TextBox1
    .Cells(dl, "B") = TextBox2
    .Cells(dl, "C") = TextBox3 & " " & TextBox4
    .Cells(dl, "D") = NF(Expert)
    .Cells(dl, "E") = ComboBox1.Value
    .Cells(dl, "F") = IIf(CheckBox1, 1, vbNullString)
    .Cells(dl, "G") = IIf(CheckBox2, 1, vbNullString)
    .Cells(dl, "H") = IIf(CheckBox3, 1, vbNullString)
    .Cells(dl, "I") = IIf(CheckBox5, 1, vbNullString)
    .Cells(dl, "J") = IIf(CheckBox4, 1, vbNullString)
    .Cells(dl, "K") = IIf(CheckBox6, 1, vbNullString)
    .Cells(dl, "L") = ComboBox2.Value
    .[A1].Select
End With
Unload UserForm1
End Sub
 

Discussions similaires

Réponses
3
Affichages
351

Statistiques des forums

Discussions
312 329
Messages
2 087 323
Membres
103 516
dernier inscrit
René Rivoli Monin