Lier deux tableaux suite à un ajout automatique de ligne via Userform VBA

Bonjour à tous,

Difficile de résumer précisément l'action à effectuer dans ce titre puisque je suis arrivé presque à la fin de mon tableau projet.

Mon but est de pouvoir établir une base de donnée qui est uniquement à consulter. Cette base de donnée sous forme d'un tableau dans la feuille "Global" est alimentée par une action effectuée dans d'autres feuilles "Gains" et "Mouvements". En réalité j'ai donné ces deux noms différemment temporairement mais chaque service de l'entreprise pourra ajouter une ligne à son tableau et à terme chaque onglet sera nommé par le nom du service concerné (maintenance, achats, etc...)

Chacun des services rentre donc via une boite de dialogue les information qui permet d'ajouter directement à la dernière ligne du tableau les infos renseignées dans les bonnes colonnes. Mais comme j'ai également besoin d'un suivi global, la même ligne est également ajouté dans mon tableau "Global"

De sorte que tout les services ajoute une ligne à son propre tableau ET au global, et si vous avez bien suivi par exemple :

- la maintenance ajoute 10 lignes à son tableau

-les achats ajoutent 16 lignes à leur tableau

-la production ajoute 4 lignes à son tableau

--> Au final le tableau "Global comporte la synthèse de toutes les lignes ajoutées soit 30 au total.

Si la macro que j'ai réussi à bidouiller en glanant des morceaux de code par-ci par-là et en modifiant les paramètres que j'ai pu comprendre. J'ai réussi à faire ce que je souhaitais à un (gros) détail près : une fois que la ligne est ajoutée dans un tableau, si je souhaite la modifier en changeant une cellule manuellement, et bien la ligne ne se modifie pas en même temps dans global, ce qui fait qu'une seule petite erreur de saisie rend le tableau global erroné (en sachant que je suis le seul à pour le modifier manuellement, il sera en simple affichage pour les autres)

Alors l'explication de ma macro :

- j'ai récupéré une macro qui ajoute une ligne à un tableau, j'ai fait en sorte que cela corresponde à mes besoins et pour chaque service ça fonctionne bien. Pour ajouter la ligne à Global j'ai procédé de la même façon avec un copier collé c'est à dire "remplir dans le tableau global une nouvelle ligne avec les infos entrées dans la boite de dialogue" donc visuellement ça marche mais du coup mes deux tableaux ne sont pas dépendants.

L'idée que j'avais eu est donc de réussir à trouver le code VBA pour que ma macro fasse "ajouter une ligne au tableau global qui copie les valeurs de la ligne ajoutées dans l'autre tableau".

Enfin c'est une piste possible que je ne sais pas coder, j'ai essayé d'ajouter un texte que ressemble à "='gains!XXX'" mais ça ne marche pas. Et si vous avez une méthode complêtement différente pour arriver au même point je suis preneur.

J'ai joint le document pour mieux visualiser, si le transfert se fait bien lorsque vous cliquez sur "boite de dialogue vous ajoutez bien la ligne au tableau en cours et sur global. Merci d'avance.

Et voici la macro :

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim sh As Worksheet, Last As Long, i As Byte, ii As Byte
Set sh = Sheets("Gains")
With sh
Dim sho As Worksheet, Lost As Long, iii As Byte, iiii As Byte
Set sho = Sheets("Global")
Last = WorksheetFunction.CountA(.Range("f:f")) + 7
For i = 1 To 9
.Cells(Last, i + 5).Value = Me.Controls("TextBox" & i).Value
.Cells(Last, 6).Value = CDate(Me.TextBox1.Value)
Next
For ii = 2 To 9
Next
End With
With sho
Lost = WorksheetFunction.CountA(.Range("f:f")) + 7
For iii = 1 To 9
'Dans cette ligne j'ai demandé d'ajouter dans la feuille "Global" la même information en même temps que dans la feuille "Gains"
'mais si je change une cellule du tableau "Gain" ca ne modifie pas le tableau Global qui est sensé être un résumé
.Cells(Lost, iii + 5).Value = Me.Controls("TextBox" & iii).Value
.Cells(Lost, 6).Value = CDate(Me.TextBox1.Value)
Next
For iiii = 2 To 9
Me.Controls("TextBox" & iiii).Value = ""
Next
End With
Application.ScreenUpdating = True
End Sub

Je sais que c'est un peu compliqué, mais si quelqu'un pouvait au moins me dire comment je pourrais demander dans une macro de copier le contenu d'une case dans une autre feuille (équivalent "=Feuil1!A1" par exemple)

Bon j'avance petit à petit, je reste bloqué sur un point pour le moment, une fois que j'aurais trouvé la solution complète je pourrais la donner.

En attendant je bloque sur :

Comment faire en sorte de définir plusieurs colonnes ? J'arrive à le faire avec des lignes (par exemple ligne 1 à 14) mais pas avec les colonnes (en gros ajouter dans une formule les colonnes de A à G) ?

Rechercher des sujets similaires à "lier deux tableaux suite ajout automatique ligne via userform vba"