Duplication d'un onglet-modèle lorsque alimentation d'un autre onglet

Bonjour à tous,

Nouveau sur ce forum, je travaille actuellement sur un fichier Excel dans lequel j'aimerais inclure de la programmation Macros VBA et j'ai grand besoin d'aide car mes connaissances sont très limitées.

Je joins mon fichier à ce message. Il contient 2 onglets : le premier est une sorte de base de données de clients, le second est un onglet-modèle vierge pour chaque client.

Voici ma problématique : j'aimerais qu'à à la création d’un nouveau client dans l’onglet « Recap_clients » (par exemple dés qu'un numéro de client est renseigné en colonne C) :

1- Duplication de l’onglet « Modele_vierge » ;

2- Nommage de cet onglet dupliqué par le numéro du client ;

3- Classement des onglets par ordre de numéro de client (l’onglet dupliqué portant le numéro de client n°1 se classant après les 2 onglets « Recap_clients » et « Modele_vierge_client ») ;

4- L'onglet dupliqué devra reprendre dès sa création certaines informations de l’onglet « Recap_clients » (colonnes A à D et O à R de l'onglet Recap_clients vers cellules A4 à C11 de l'onglet du client) ;

5- Des informations seront ensuite alimentées dans cet onglet dupliqué => j'aimerais que ces informations s'incrémentent automatiquement dans l’onglet « Recap_clients » (par exemple contenu de la cellule L9 de l'onglet du client vers la colonne E de l'onglet Recap_clients).

Je vous suis très reconnaissant par avance pour tous les conseils et toute l'aide que vous pourrez m'apporter me permettant d'avancer dans mon projet.

Eric

Bonjour et bienvenu sur le forum,

Voici votre fichier retravaillé (j'espère qu'il est compatible)

Si tout se passe bien avec votre version d'excel, la procédure se déclenche lors de la saisie du numéro client (il faut donc tout avoir saisi avant).

Je travail maintenant sur votre cinquième demande

Cordialement

J'ai testé, c'est formidable ! Mille mercis besoin_d_aide !

Une petite question afin que je progresse : y a t-il 2 macros ou une seule ? Car il y a le "module 1" dénommé "Macro 2" que je ne comprends pas, et la "Feuil 2" qui, me semble t-il, est la macro tant désirée. A quoi correspond ce "module 1 Macro 2" ?

Merci d'avance de votre réponse et merci d'avance si vous arrivez à résoudre ma question 5.

Sans vouloir abuser, j'en profite pour vous demander si les améliorations suivantes sont possibles sur le travail que vous avez déjà réalisé :

1- Que la couleur des onglets dupliqués soient gris (sans couleur)

2- Que les onglets se classent par ordre croissant de numéro de client (1 puis 2 puis 3 etc...) et non par ordre de création chronologique du client

3- Que le nommage des onglets puissent supporter un 0 comme premier chiffre (exemple : client n° 01 => onglet dupliqué nommé 01 et non 1)

4- Création automatique d'un lien hypertexte depuis le numéro de client rentré en colonne C de Recap_clients vers l'onglet dupliqué du même client

5- Que l'onglet dupliqué se supprime si je supprime le numéro de client rentré en colonne C de Recap_clients

Encore une fois d'énormes remerciements pour la macro que vous avez réalisée et mille mercis d'avance si vous pouvez répondre à mes questions.

Très bonne soirée à vous

Eric

Re,

Pour la macro, c'est bien celle qui est dans "Feuil 2" qui est la bonne, l'autre n'est qu'un test que j'ai réalisé que j'ai oublié de supprimer

Pour le reste (ce qui fait beaucoup de demandes ), voici déjà ce que j'ai fais. Testez-le pour voir si déjà çà vous convient, je travaille sur la suite dès que j'ai un moment.

5- Des informations seront ensuite alimentées dans cet onglet dupliqué => j'aimerais que ces informations s'incrémentent automatiquement dans l’onglet « Recap_clients » (par exemple contenu de la cellule L9 de l'onglet du client vers la colonne E de l'onglet Recap_clients).

Par contre, pour la demande ci-dessus, j'ai fait un code mais il ne s'applique que pour l'exemple que vous avez donné (je me perd un peu dans vos tableaux sans trop savoir quelles données remonter dans l'onglet Récap_clients). Du coup, essayez peut être de l'adapter pour les données que vous recherchez (la macro se trouve dans "Feuil 1" afin d'être dupliquée à chaque nouveau client)

Bonne soirée

Bonsoir,

J'ai testé, c'est vraiment super !

Il n'y a juste que 2 petites choses :

  • Le lien hypertexte automatique depuis le nom du client en colonne C de Recap_clients vers la cellule A1 de l'onglet dupliqué du client concerné ne semble pas fonctionner (et je n'ai pas trouvé le code source dans les macros pour pouvoir y remédier)
  • Ce qui serait vraiment génial, c'est que si je modifie (après la création de l'onglet dupliqué) des éléments en colonnes A, B, C, D, O, P, Q, R de l'onglet Recap_clients, ces éléments se mettent à jour dans l'onglet dupliqué du client concerné.
Mais si c'est trop compliqué ou que ça remet en cause trop profondément le travail que vous avez réalisé, pas la peine d'y consacrer du temps. Je vous suis extrêmement reconnaissant pour le temps que vous avez déjà passé sur mon projet car mes demandes étaient nombreuses. Le résultat est très satisfaisant et votre réactivité m'a vraiment énormément aidée.

Dites moi comment je peux vous créditer d'une note très positive sur ce site ?

Re,

- Le lien hypertexte automatique depuis le nom du client en colonne C de Recap_clients vers la cellule A1 de l'onglet dupliqué du client concerné ne semble pas fonctionner (et je n'ai pas trouvé le code source dans les macros pour pouvoir y remédier)

Effectivement, j'avais commencer à y réfléchir mais par manque de temps je n'avais pu finir. Il n'y avait donc pas de trace de lien hypertexte dans le code (mais maintenant si ! )

- Ce qui serait vraiment génial, c'est que si je modifie (après la création de l'onglet dupliqué) des éléments en colonnes A, B, C, D, O, P, Q, R de l'onglet Recap_clients, ces éléments se mettent à jour dans l'onglet dupliqué du client concerné.

Aaah d'accord !!! moi j'avais compris l'inverse dans vos demande (c'est-à-dire que ce que vous remplissiez dans la feuille du client remonterai dans la feuille Recap). Du coup, nul besoin de VBA pour cela, une simple formule suffit (avec rechercheV notamment )

Enfin, j'ai également mis en place un bouton pour une procédure de suppression de client (numéros, feuille et information). En espérant que ça vous sera utile...

Dites moi comment je peux vous créditer d'une note très positive sur ce site ?

Et bien, je vous remercie car ça fait toujours plaisir de voir des gens reconnaissant. Donc si vous voulez, vous pouvez mettre un "J'aime sur l'un de mes messages.

Bien entendu, si vous trouvez un bug, n'hésitez pas à me recontacter...

Cordialement,

J'ai testé, c'est génial !

2 petites choses :

  • Le bouton "supprimer" ne semble pas fonctionner => en quel format faut-il saisir le numéro de client dans la boîte de dialogue de suppression ?
  • Est-il possible de rajouter qu'il n'est pas possible de saisir 2 numéros de client identiques en colonne C de Recap_clients ?
Merci encore. J'a tenté de mettre un "j'aime", j'espère que ça a fonctionné.

Très joyeux Noël !

Bonjour et joyeux noël,

- Le bouton "supprimer" ne semble pas fonctionner => en quel format faut-il saisir le numéro de client dans la boîte de dialogue de suppression ?

En fait, ce n'est pas un numéro qu'il faut saisir mais c'est une boite de dialogue qui enregistre l'adresse de la cellule que vous sélectionnez sur la feuille (en l’occurrence l'adresse du numéro client sur lequel vous cliquez dans la colonne C de l'onglet Récap_client) : par exemple, elle peut contenir C12.

Bien sûr, si cette fonctionnalité vous dérange, je peut changer l'inputbox (la boite de dialogue) pour que vous saisissiez plutôt le numéro client.

- Est-il possible de rajouter qu'il n'est pas possible de saisir 2 numéros de client identiques en colonne C de Recap_clients ?

Voila, c'est fait !

Cordialement

Merci beaucoup mais je ne vois pas de document joint...

Re,

Désolé, un oubli !

Cordialement

Merci !

Effectivement, si on pouvait saisir un numéro de client plutôt que les coordonnées d'une cellule pour supprimer un client, ce serait mieux je pense Et si lorsqu'on décide de supprimer avec un numéro de client qui n'existe pas, une boîte de dialogue demandant de recommencer apparaît, alors c'est vraiment parfait

J'ai refait un test sur le fichier, et voici mon problème :

Dans l'onglet Recap_clients, lorsque je saisis :

Nom : Client 2 / Type : B / N° : 2 / Date démarrage : 02/02/2018 / Adresse : 2 RUE / 2@gmail.com /Tél : 0202020202 / contact : 2

Nom : Client 1 / Type : A / N° : 1 / Date démarrage : 01/01/2018 / Adresse : 1 RUE / 1@gmail.com /Tél : 0101010101 / contact : 1

Nom : Client 4 / Type : D / N° : 4 / Date démarrage : 04/04/2018 / Adresse : 4 RUE / 4@gmail.com /Tél : 0404040404 / contact : 4

Nom : Client 3 / Type : C / N° : 3 / Date démarrage : 03/03/2018 / Adresse : 3 RUE / 3@gmail.com /Tél : 0303030303 / contact : 3

=> Résultat : OK pour les clients 2 et 4, mais pour l'onglet dupliqué du client 1 : aucune donnée reprise dans les cellules A5 à A8 + C11, et l'onglet dupliqué du client 3 reprend en A5 à A8 + C11 les données du client 1 ou du client 2.

Je pense que cela vient des formules SIERREUR ou RECHERCHEV de l'onglet modèle vierge, mais je n'arrive pas à trouver. Sauriez-vous m'aider ? Est-ce un problème qui survient pour tous les clients "impairs" (client n°1, 3, 5, 7, etc...) ?

Par ailleurs j'ai une autre question : que se passe t-il si on utilise des filtres automatiques dans l'onglet Recap_clients ? Cela aura t-il des conséquences sur le classement des onglets dupliqués ?

Merci d'avance pour vos réponses

Bonne soirée

Eric

Re,

Effectivement, si on pouvait saisir un numéro de client plutôt que les coordonnées d'une cellule pour supprimer un client, ce serait mieux je pense Et si lorsqu'on décide de supprimer avec un numéro de client qui n'existe pas, une boîte de dialogue demandant de recommencer apparaît, alors c'est vraiment parfait

Voilà, j'ai créé un userform avec les 2 possibilités (comme çà pas de jaloux ).

Dans l'onglet Recap_clients, lorsque je saisis :

Nom : Client 2 / Type : B / N° : 2 / Date démarrage : 02/02/2018 / Adresse : 2 RUE / 2@gmail.com /Tél : 0202020202 / contact : 2

Nom : Client 1 / Type : A / N° : 1 / Date démarrage : 01/01/2018 / Adresse : 1 RUE / 1@gmail.com /Tél : 0101010101 / contact : 1

Nom : Client 4 / Type : D / N° : 4 / Date démarrage : 04/04/2018 / Adresse : 4 RUE / 4@gmail.com /Tél : 0404040404 / contact : 4

Nom : Client 3 / Type : C / N° : 3 / Date démarrage : 03/03/2018 / Adresse : 3 RUE / 3@gmail.com /Tél : 0303030303 / contact : 3

=> Résultat : OK pour les clients 2 et 4, mais pour l'onglet dupliqué du client 1 : aucune donnée reprise dans les cellules A5 à A8 + C11, et l'onglet dupliqué du client 3 reprend en A5 à A8 + C11 les données du client 1 ou du client 2.

Je pense que cela vient des formules SIERREUR ou RECHERCHEV de l'onglet modèle vierge, mais je n'arrive pas à trouver. Sauriez-vous m'aider ? Est-ce un problème qui survient pour tous les clients "impairs" (client n°1, 3, 5, 7, etc...) ?

Ici, je ne rencontre pas de problème sur mon ordi : tout fonctionne normalement. Peut-être cela vient de la version d'Excel que vous avez si elle est ancienne. Laquelle avez vous (2003, 2010, 2013,2016 ou avant) ?

dans le fichier joint, j'ai laissé les données test (donc correctes partout pour moi). Dites moi si il y a un soucis chez vous...

Par ailleurs j'ai une autre question : que se passe t-il si on utilise des filtres automatiques dans l'onglet Recap_clients ? Cela aura t-il des conséquences sur le classement des onglets dupliqués ?

Normalement aucun impact : les filtres n'agissent que sur l’affichage des données dans l'onglet concerné mais les données sont toujours présentes dans le classeur donc aucun problème

Cordialement

Bonjour besoin_d_aide,

Le bouton "supprimer" fonctionne à merveille ! Merci !

En revanche, toujours ce petit problème évoqué avant (pour info j'utilise Excel 2000 et Excel 2010). Effectivement, vous avez raison, si je saisis les clients dans l'ordre (client 1, puis 2, puis 3 puis 4) => tout fonctionne parfaitement. Mais si je saisis d'abord le client 2, puis 1, puis 4 puis 3 => alors pas de problème pour les clients 2 et 4, mais le client 1 ne reprend aucune donnée et le client 3 reprend les données du client 1.

SI vous trouvez le problème c'est super, sinon il y a peut être une possibilité pour que les clients se classent d'emblée par numéro croissant de client dans l'onglet Recap_clients ? (moi ça ne me pose pas de problème).

Merci d'avance, et excellente fin d'année !

Re,

Désolé, je cherchait l'erreur car ne comprenant pas d'où elle pouvait provenir. Je me suis alors rendu compte que je me suis trope dans la RechercheV car le dernier paramètre (Vrai ou Faux) recherchait une valeur approximative. En conséquence, il faut simplement changer le dernier paramètre en le remplaçant par Faux (remplacez simplement dans l'onglet modèle vierge client avant de recréer les onglet clients de votre fichier et tout devrai rentrer dans l'ordre)

Je ne sais pas si j'ai été très clair mais voici le fichier ci-joint et tout fonctionne visiblement.

Encore désolé pour le désagrément car c'était une étourderie de ma part.

Cordialement

Bonjour et meilleurs voeux pour cette nouvelle année !

J'ai commencé les tests "grandeur nature" sur l'ensemble des fonctionnalités du fichier, et tout semble fonctionner parfaitement !

A nouveau : un immense merci pour le temps que vous avez consacré à mes demandes, qui étaient très nombreuses...

Merci, merci, merci

Eric

Bonjour,

Désolé de revenir sur le sujet mais j'ai un tout petit problème : il s'agit de la remontée de l'information de la cellule L9 de Modele_vierge vers la colonne E de Recap_clients. En effet, dans mon fichier "réel", j'ai une formule en cellule L9 (cette cellule va chercher l'information dans une autre cellule du même onglet) et du coup la remontée de cette info vers la colonne E de Recap_clients ne se fait pas (ça fonctionne cependant très bien si j'enlève la formule de L9 et saisit une simple donnée).

Auriez-vous une solution ?

Par avance merci

Eric

Re,

Concernant la cellule L9, j'avais fait un code VBA suite à l'une de vos demande. Pour que tout fonctionne, il suffit de supprimer le code. La formule devrait alors suffire.

Le code en question se trouve dans feuil1 ("Model_Vierge_client") et il se lance à chaque fois que la cellule L9 est modifiée. C'est le code suivant (qui se recopie dans chaque feuille client du coup)

Private Sub Worksheet_Change(ByVal Target As Range)
'permet de remonter les infos de la feuille du client à la feuille récap_clients
If Not Intersect(Target, Range("L9")) Is Nothing Then
    Dim Nom As String, Num As Long, adresse As Range
    Nom = ActiveSheet.Name
    Num = ActiveSheet.Range("C9").Value
    Set adresse = Sheets("Recap_clients").Range("C:C").Cells.Find(Num)
    Sheets("Recap_clients").Range("E" & adresse.Row).Value = Sheets(Nom).Range("L9").Value
End If
End Sub

Cordilement

Bonjour,

En fait, en L9, j'ai la formule =SI(I9<>"";I9;SI(I10<>"";I10;SI(I11<>"";I11;SI(I12<>"";I12;SI(I13<>"";I13;"")))))

Si il n'y a pas cette formule et que je saisis une date en L9, alors la macro fonctionne parfaitement => la date de L9 va dans la colonne C du client concerné de Recap_clients.

Mais quand il y a la formule, la date de L9 ne se répercute pas dans Recap_clients.

Que faudrait-il modifier dans la macro à votre avis pour que la macro fonctionne tout en laissant ma formule en L9 ?

Merci d'avance et bonne soirée

Bonjour,

Désolé pour ma réponse si tardive mais j'ai beaucoup de travail ces derniers temps.

Voici le fichier modifié que j'explique brièvement.

Je n'ai pas conservé la formule mais j'ai adapté le VBA. En effet, désormais L9 se modifie dès que la plage de cellule de I9 à I13 est modifié. La macro prend alors la valeur de la dernière cellule de la plage. Par exemple, si les cellule I9, I10 et I11 sont remplies, L9 prendra la valeur de I11.

En espérant avoir été clair,

Cordialement

Bonjour besoin d'aide,

C'est très gentil de revenir vers moi avec la macro modifiée.

Depuis notre dernier échange, mon fichier a évolué.

La macro est désormais de la forme suivante, et du coup je ne sais pas intégrer votre nouvelle macro à l'intérieur de celle-ci.

Private Sub Worksheet_Change(ByVal Target As Range)

'

Dim iTRow%, iRowUp%

Dim Nom$, Num As Long, adresse As Range

'

Application.EnableEvents = False

iTRow = Target.Row

iRowUp = Target.End(xlUp).Row

If Not Intersect(Target, Range("B:B")) Is Nothing Then

If Target <> "" And Target.Offset(1, -1) = "TOTAL" Then

Range("A" & iTRow + 1 & ":I" & iTRow + 1).Insert shift:=xlDown

Range("E" & iTRow + 2).FormulaLocal = "=SOMME(E" & iRowUp & ":E" & iTRow & ")"

Range("F" & iTRow + 2).FormulaLocal = "=SOMME(F" & iRowUp & ":F" & iTRow & ")"

End If

End If

'permet de remonter les infos de la cellule L9 de la feuille du client à la feuille recap_clients

If Not Intersect(Target, Range("L9")) Is Nothing Then

Nom = ActiveSheet.Name

Num = ActiveSheet.Range("C9").Value

Set adresse = Sheets("Recap_clients").Range("C:C").Cells.Find(Num)

Sheets("Recap_clients").Range("E" & adresse.Row).Value = Sheets(Nom).Range("L9").Value

End If

'permet de remonter les infos de la cellule R5 de la feuille du client à la feuille recap_clients

If Not Intersect(Target, Range("R5")) Is Nothing Then

Nom = ActiveSheet.Name

Num = ActiveSheet.Range("C9").Value

Set adresse = Sheets("Recap_clients").Range("C:C").Cells.Find(Num)

Sheets("Recap_clients").Range("L" & adresse.Row).Value = Sheets(Nom).Range("R5").Value

End If

'

Application.EnableEvents = True

'

End Sub

En revanche, sans vouloir abuser, j'ai un point qui me pose encore problème. J'ai ajouté un tableau de synthèse de P3 à S7 (voir fichier joint), et j'aimerais faire remonter les données de la colonne S (S5 à S7) vers la colonne M de Recap_clients, avec les conditions suivantes : si R5 et R6 et R7 vides => alors colonne M de Recap_clients vide ; si S5 ou S6 ou S7 = « En attente » => alors colonne M de Recap_clients = « En attente » ; sinon colonne M = « OK RAS - A jour ».

Si ce n'est pas trop compliqué, auriez-vous une solution ?

Grand merci d'avance

Rechercher des sujets similaires à "duplication onglet modele lorsque alimentation"