Macro insérer une ligne dans 2 fichiers différents

Bonjour,

J'ai fais des recherches sur le forum mais là je trouve pas la solution!

J'ai fais le tableau suivant qui me permet de d'insérer une ligne avec une commande macro! (je vous laisse apprécier mon niveau...mais ça fonctionne)

Mon assistante a un tableau similaire (avec moins d'info) et je voudrais que la macro s'exécute sur les 2 tableaux...C a dire, insérer du tableau A une ligne sur tableau A et B et du tableau B une ligne sur le B et le A. (ça me semble si simple et je ni arrive pas...rrrr)

Merci de votre aide.

J'ai supprimé les données confidentielles...Dsl et voici le fichier

Si quelqu'un peut m'aider???

Bonsoir et

Un exemple avec 2 UserForms : Ajouter/Modifier un Client

A+

Bonjour Geof52 et merci de ta réponse. je retiens l'idée de la boite de dialogue pour ajouter/modifier!

Mais comment je peux faire pour que cela créer une nouvelle ligne dans un autre fichier dans lequel il y a que les info contact du client (en jaune)?

Bonjour,

Je pensais que tu avais regroupé tes deux fichiers en 1 puisque sur deux feuilles ("Contacts clients" et "Clone Contacts clients") le meme tableau l'un qui contient plus de colonne que l'autre et certaines colonnes sont déplacées.

Envoi un exemple de ton deuxieme fichier pour connaitre son squelette (nom de fichier, feuille concerné, ligne, colonne, ...).

Et ça pourrait surement se faire avec un truc comme :

DosCollegue = "Z:\...\Collegue.xlsm"

Workbooks.Open Filename:=DosCollegue 

Set Collegue = Workbooks("Collegue.xlsm").Worksheets(1)
Set MonFichier = ThisWorkbook.Worksheets(1)

Et remplacer "Feuil1" par "MonFichier" et "Feuil4" par "Collegue"
Faire pareil dans son fichier en changeant juste le lien "DosCollegue" pour y mettre le lien de ton fichier.

A+

Slt Geof52, voici les 2 fichiers sur lesquels je souhaite que la macro +client créer 1 ligne sur les 2 fichiers 1er onglet.

merci de ton aide.

Salut,

Premier truc a faire :

Dans ThisWorkbook remettre les liens qui vont chercher le fichier du collegue sur les 2 fichiers.

image

Un truc a tester puisque je n'ai qu'un ordi, je ne peux pas tester la lecture seule. En gros si chaque de vous a son fichier ouvert lorsque l'on ajoute ou modifie un client un message devrait apparaitre pour te dire "Le collegue utilise le fichier il doit le fermer pendant la modif".

Pour moi, ça fonctionne correctement.

A+

Salut,

ça fonctionne pas chez moi, je comprend pas

J'ai mis les liens dans ThisWorkbook comme tu dis, comme ça:

capture d ecran 2023 12 01 083454 capture d ecran 2023 12 01 083608

Et quant j'ajoute un client a partir du fichier florian...j'ai ce message

capture d ecran 2023 12 01 084258

Suivi de

capture d ecran 2023 12 01 083722

Salut,

1) Tu n'as pas telechargé mon fichier nommé "Florence"
Comment Florence pourrait ajouter un nouveau client si elle n'a pas les macros + UserForm

image

2) Les liens ne correspondent pas aux noms des fichiers

image image

il y a "-1" en trop dans le "ThisWorkbook" du fichier "Florian"

image image

Il y a un "-" en trop dans le "ThisWorkbook" du fichier "Florence"

3) Et je ne sais pas si tu souhaites tester pour le moment mais les fichiers ne pourront pas rester sur le disque local "C:/"
(choisir un serveur accessible aux 2 ordinateurs)

A+

Salut Geof52,

Oupss, tu avais raison, je n'avais pas téléchargé le bon fichier...

Tout fonctionne...sauf la macro "modifier", il ne modifie pas les nouvelles lignes créer.

Tu peux encore m'aider?

Salut Floduval,

De mon coté la macro "modifier" fonctionne, de Florian vers Florence et de Florence vers Florian.

J'ai ajouter un client test aaa que j'ai modifier en test bbb pour tester de Florian vers Florence
J'ai fait pareil avec test ccc en test ddd de Florence vers Florian

et j'ai bien les modifications sur les 2 fichiers.

image

Comment tu as procédé pour que ça ne fonctionne pas ?

J'ai importé mes anciens contact (155 lignes) et il me fait cette erreur a partir de la ligne 156.

capture d ecran 2023 12 04 101841

Les ligne apparaissent pourtant bien dans la Box!

capture d ecran 2023 12 04 102131

Je n'ai pas réussis a recreer le probleme

image

Tu peux m'envoyer ce fichier en message privé pour que je test ?

Ok donc la colonne Status contient une formule, elle ne peut donc pas etre modifié depuis les UserForms
(elle n'en a pas besoin, on va donc la retirer des UserForms).

Il faut donc sur tes 2 fichiers :

Ouvrir le code des 2 UserForm "UF_Add_Client" et "UF_Cedit_Client"

image

Et supprmier toutes les lignes qui contiennent "TextBox4"

Tu peux faire un Ctrl +F pour les retrouver facilement dans "Projet en cours"

image
'Dans UF_Add_Client
    .Cells(Ligne, 4).Value = TextBox4.Value
    .Cells(Ligne, 4).Value = TextBox4.Value

'UF_Edit_Client
TextBox4.Visible = False
    .Cells(Ligne, 4).Value = TextBox4.Value
    .Cells(Ligne, 4).Value = TextBox4.Value
TextBox4.Visible = True
    TextBox4.Value = .Cells(Ligne, 4).Value

Puis revenir sur l'affichage de l'userForm

image

Et supprime le Status sur les 2 UserForm de tes deux fichiers

image image

Pour ta formule en colonne Status je regarde ça un peu plus tard

A+

Pour la formule, on va faire simple puisqu'il manque des colonnes dans la tableau de Florence pour avoir le Status on va recup l,

Dans le Fichier Florian :

Dans l'UF_Add_Client, juste apres "With MonFichier" la où tu a supprimé ".Cells(Ligne, 4).Value = TextBox4.Value" ajoute ceci :

    .Cells(Ligne, 4).Formula2R1C1 = "=IFS([@[Date Devis Signé]]<>"""",""Gagné"",[@[Invalidé Reporté Perdu Relancer]]=""Invalidé"",""Invalidé"",[@[Invalidé Reporté Perdu Relancer]]=""Perdu"",""Perdu"",[@[Invalidé Reporté Perdu Relancer]]=""Reporté"",""A relancer"",[@[Date devis envoyé]]<>"""",""Devis envoyé"",[@Rdv]<>"""",""Rdv Pris"",[@contact1]<>"""",""Laissé message"")"

Et juste apres "With Collegue" la où tu a supprimé ".Cells(Ligne, 4).Value = TextBox4.Value" ajoute ceci :

    .Cells(Ligne, 4).FormulaR1C1 = "='suivi-contacts-clients-florian.xlsm'!Tableau1[@Status]"

Dans le Fichier Florence :

Toujours dans l'UF_Add_Client, tu vas faire la même chose mais en inversant les codes :

Dans la partie "With MonFichier" :

    .Cells(Ligne, 4).FormulaR1C1 = "='suivi-contacts-clients-florian.xlsm'!Tableau1[@Status]"

Dans la partie "With Collegue" :

    .Cells(Ligne, 4).Formula2R1C1 = "=IFS([@[Date Devis Signé]]<>"""",""Gagné"",[@[Invalidé Reporté Perdu Relancer]]=""Invalidé"",""Invalidé"",[@[Invalidé Reporté Perdu Relancer]]=""Perdu"",""Perdu"",[@[Invalidé Reporté Perdu Relancer]]=""Reporté"",""A relancer"",[@[Date devis envoyé]]<>"""",""Devis envoyé"",[@Rdv]<>"""",""Rdv Pris"",[@contact1]<>"""",""Laissé message"")"

Et Toujours pour le Fichier Florence, pour la Maj des liens entre les fichiers, tu vas rajouter :

Dans This Workbook juste apres

DosCollegue = "C:\Users\veron\OneDrive\Documents\FLORIAN\SUIVI TEST\suivi-contacts-clients-florian.xlsm"
Workbooks.Open DosCollegue, ReadOnly:=True
FichierCollegue = Mid(DosCollegue, InStrRev(DosCollegue, "\") + 1)
Workbooks(FichierCollegue).Close SaveChanges:=False

A+

Slt Geof52, j'ai fait comme tu m'as dit et le statut fonctionne.

Par contre, du fichier Florian: pour "modifier" une ligne, lorsque que je valide, ça ferme fichier Florian et ouvre le fichier Florence sans prendre la modif sur aucun des 2.

Sur fichier Florence...même manip et là ça fonctionne et enregistre bien sur les 2.

Je t'envois en MP les 2 fichiers!

Salut Floduval,

Exact, une condition que j'ai zappé dans mon dernier message :
A l'ouverture du fichier Florence on mets a jour la colonne Status en ouvrant (lecture seule) puis fermant le fichier Florian.

Du coup, la macro lancé depuis Florian lors d'un Ajout/Modif client s'arrete trop tot
(car le fichier Florian est fermé a l'ouverture de fichier Florence).

Pour changer ça, il faut modifier dans "ThisWorkbook" du fichier Florence :

Cette ligne qui ferme le fichier Florian

Workbooks(FichierCollegue).Close SaveChanges:=False

Pour cette ligne qui ferme le fichier Florian seulement si il est ouvert en lecture seul

    If Workbooks(FichierCollegue).ReadOnly = True Then Workbooks(FichierCollegue).Close SaveChanges:=False

A+

Edit :

Pour un peu de confort visuel tu peux ajouter :

Application.ScreenUpdating = False

Dans ThisWorkbook de Florence juste apres

Private Sub Workbook_Open()

Et dans les Userforms juste apres les boutons Ajouter / Modifier de Florence et Florian

Private Sub Add_Client_Click()

Private Sub Edit_Client_Click()

L'affichage du classeur du collegue sera "masqué" et n'apparaitra plus une fraction de seconde a l'ecran pour rien.

On y est presque...

Quant je créer du fichier Florian ça me met 2 lignes identiques mais ça créer pas 1 ligne dans fichier Florence

je t'envois en MP les 2 fichiers

J'ai modifié les noms des classeurs sur les Userform des tes 2 Fichiers

Set Collegue = Workbooks(FichierCollegue).Worksheets(1)
Set MonFichier = ThisWorkbook.Worksheets(1)

"Workbooks(FichierCollegue)" a la place de "ActiveWorkbook"

Ca devrait supprimer le probleme.

Rechercher des sujets similaires à "macro inserer ligne fichiers differents"