Copier un classeur incluant liste déroulante dans nouveau classeur

Bonjour à tous!

Je reviens vers vous pour améliorer une macro dont vous avez déjà aidé il y a quelque mois.

Premièrement, la macro génère un nouveau classeur dans un nouveau dossier aussi créé.

  • Le dossier et le classeur généré sont nommé via la valeur de plusieurs cellule de la feuille ("Fiche Client").
  • Le nouveau classeur généré comporte 5 onglet: ("Base Donnés", "Modele Facture", "Soumission Paysager", "Soumission Menuiserie", "Fiche Client").

Dans les feuilles suivantes et les cellules indiqués, il y a des liste déroulante qui puise l'information dans la ("Base donnés") :

  • Soumission Paysager: ("D26:D60")
  • Soumission Menuiserie: ("D26:D55")

Voici mon problème: Les listes déroulantes ne se copie pas dans les feuilles ("Soumission Paysager") et ("Soumission Menuiserie") du nouveau classeur généré.

Je ne comprend pas se qui est nécessaires puisque les feuilles sont logiquement entièrement copier/collé et que tout le reste marche...

Voici le code que j'aimerais améliorer:

Sub creation_fiche_client()

Dim chemin_du_dossier As String

Dim NomDossier As String

Dim sh1 As Worksheet, sh2 As Worksheet

Dim reponse As String

Set sh1 = Worksheets("Nouveau Client")

Set sh2 = Worksheets("Fiche Client")

If sh1.Cells(4, 2) = "" Then

MsgBox "Il faut créer une fiche client"

Else

reponse = MsgBox("La fiche client a été transféré à la base de données?", vbYesNo + vbQuestion, "Créer le dossier Client")

If reponse = vbYes Then

sh2.Range("B1:B30") = sh1.Range("B1:B30").Value

Worksheets(Array("Base Donnés", "Modele Facture", "Soumission Paysager", "Soumission Menuiserie", "Fiche Client")).Copy

Worksheets("Fiche Client").Select

End If

End If

NomDossier = Sheets("Fiche Client").Range("B2") & " " & Range("B3") & " " & Range("B4")

NomFiche = Sheets("Fiche Client").Range("B2") & " " & Range("B3") & " " & Range("B4") & " " & Range("B25")

chemin_du_dossier = "C:\Users\Pc\..." & NomDossier

chemin_du_dossier_steve = "C:\Users\..." & NomDossier

On Error Resume Next

MkDir (chemin_du_dossier)

MkDir (chemin_du_dossier_steve)

ActiveWorkbook.SaveAs Filename:=chemin_du_dossier & "\" & NomFiche & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled

ActiveWorkbook.SaveAs Filename:=chemin_du_dossier_steve & "\" & NomFiche & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled

MsgBox ("La création du dossier est maintenant terminé!")

ActiveWorkbook.Close savechanges:=False

End Sub

Nous utilisons deux ordinateur différents ayant un chemin d'accès différent c'est pourquoi dans le code il y a deux chemin lors de la création du dossier et du classeur.

Je vous remercie pour tout commentaire!

Steve

Pour vous aider à m'aider XD

Voici un classeur test pour la structure des onglets concernés...

Le code à modifier se trouve dans le module 3.

Cordialement,

Steve

54programme-test.xlsm (158.15 Ko)

Bonjour,

Essaie de changer la ligne

sh2.Range("B1:B30") = sh1.Range("B1:B30").Value

par la ligne

sh1.Range("B1:B30").Copy sh2.Range("B1:B30")

Cordialement

re,

En fait, tu n'as pas à changer la ligne.

En regardant d'un peu plus prés, je me suis aperçu que les validations de données n'étaient pas bonnes pour la cellule B17.

J'ai donc remis les référence publicitaires dans la feuille Fiche Client.

img1

La elles apparaissent dans le nouveau classeur client. Je ne me l'explique pas.

C'est surement un piste à creuser.

Vois le fichier modifié pour compléter mes dires.

Cordialement

Bonjour à tous et merci ddetp88 pour ta réponse

Désolé du délais mais je suis maintenant dispo pour les prochaine heures...

J'ai essayer de modifier les validation de donnée et rien ne change...

La liste déroulante dans la fiche client n'est pas nécessaire au transfert donc le problème est plutot via celle de s soumission...

J'ai essayer de seulement copier la soumission et de la collé dans un nouveau classeur... Les validation disparaisse aussi alors je pense que le problème vient du format de copier/collé peut-être...

Est-ce qu'il y a une formule qui copie aussi les validation de donnée afin de les transférer...

Comment les identifier afin de les ajouter à la copie?

sinon je ne comprend pas pourquoi il ne se transfert pas considérant les validation de donnés attaché à chaque cellule...

re,

Est-ce qu'il y a une formule qui copie aussi les validation de donnée afin de les transférer...

La fonction copy fait ça très bien habituellement. C'est la solution pour copier la totalité mises en forme incluses.

Je crois qu'il faut orienter ta recherche vers les listes de validation. Elles ne me semblent pas toutes clean.

Je regarderai si j'ai un temps.

Cordialement

Merci de ta réponse

Je vais réviser entre temps si avec mon jeune expérience dans excel je peux trouver quelques chose.

Sinon je suis toujours ouvert au suggestion!

Cordialement

Bonjour à tous,

Effectivement le problème ne semble pas venir du code vba puisque même en créant manuellement une copie des feuille concernés les listes déroulantes ne s'affiche pas...

Si je copie le classeur entier et bien évidemment tout marche.

Pourtant tout marchaient bien avant et rien n'a été changer à l’exception de quelques petit correctif mineur ayant aucun lien.

Est-ce en raison des mises à jours dernièrement? Comme par-exemple le fameux @ ajouter dans certaine formule...

J'ai aussi tout réviser les formules de validation de donnés et pourtant (sans avoir été modifier depuis des lustres) rien ne cloche...

Je ne voit vraiment pas le problème qui empêche le transfert des liste déroulante qui marche à merveille dans le fichier source...

Pour ajouter un commentaire qui peut être utile;

  • J'ai créé une copie via la macro mentionné dans les premiers commentaires (module3) il y a environs 1 semaine...
  • Les listes déroulantes fonctionnaient bien à cette époque dans les copies générés...
  • J'ai ouvert ce fichier, sélectionné tout les onglets, bouton de droite et créer une copie dans un nouveau classeur et boom, les listes déroulantes ne fonctionne plus...

C'est quant même très spécial de mon point de vue XD

Bref... mise à jour me paraît logique

Formule: Validation de donné et gestionnaire de noms

Bonjours à tous,

À se que je peux voir, le problème est bien caché :/

J'ai essayer une chose simple:

lorsque je crée une liste déroulante dans soumission paysager et que je sélectionne des mots dans cette même feuille, la liste déroulante se transfert correctement...

Par-contre, lorsque je fait la même chose avec des donnés situer dans une autre feuille du même classeur, la liste déroulante disparaît lors du transfert..

Quelqu'un a une idée svp?

J'ai peur d'avoir à refaire le programme comprenant une trentaine de feuilles et une centaine de macro

Bonjour,

C'est ce que je t'ai expliqué dans ma réponse du 19/04 à 10h09

Je l'ai fait pour la fiche client et là aussi ça marche.

En regardant d'un peu plus prés, je me suis aperçu que les validations de données n'étaient pas bonnes pour la cellule B17.
J'ai donc remis les référence publicitaires dans la feuille Fiche Client. 

Tu devrais regarder ou modifier dans le gestionnaire de noms les formules qui sont en lien avec les données de validation et faire un nouvel essai. Tu as plein de #REf! sur la version que tu as mis à disposition.

Cordialement

Bonjour,

J'ai effectué une multitude de test et d'essaie et je trouve le résultat disons peu pratique...

La seul façon que j'ai trouver est de copier collé la formule de validation de donnée dans la copie généré pour avoir une liste déroulante auto-filtrante...

deuxième façons:

on oublis la portion auto-filtrante et on garde seulement une liste déroulante basic en ajoutant dans la même feuille que l'emplacement de la liste déroulante toute la base de donnée...

Résultat: ouverture lente et je ne parle pas du téléphone mobile...

Pourtant, il y a environs 2 semaines, tout marchait très bien sans aucun soucis...

Les probleme de REF dans les formule "gestionnaire de nom" sont de vieille formule qui ne sont plus utilisé... J'avais tout simplement oublier de les supprimer...

Quest-ce qui s'est passé c'est deux dernière semaine à part une mise à jour???

Mystère................

Bonjour,

Est-ce que tu as remis en ordre les formules qui concernent les validations de données.

Exemple pour la feuille nouveau client en B17

Remplace la formule par celle-ci

=DECALER('Base donnés'!$I$2;;;NBVAL('Base donnés'!$I:$I)-1)

Par ailleurs, dans le gestionnaire de nom, il faut remettre les formules en place ou supprimer toutes les lignes qui ne servent à rien et pour lesquelles #REF! apparait.

Ensuite, donne nous les coordonnées des autres cellules où tu as des listes de validation de données. (feuille, cellule)

Pour finir reposte le fichier.

Cordialement

Bon voila:

1: télécharger le fichier "test"

2: Sélectionner les deux feuilles

3: Clic droit sur une des onglet et sélectionner "Déplacer ou copier"

4: Cocher la case 'créer une copie"

4: Dans le menu classeur, sélectionner "nouveau classeur"

5: Sélectionner "OK"

Réessayer la liste déroulante dans le nouveau dossier créer...

Pour ma part, la liste déroulante a disparu et même sur des formules très simples....

Je fait ce genre de chose régulièrement et maintenant ce n'est plus possible

Bien à vous

8test.xlsx (9.24 Ko)

Désolé de répondre tardivement.

Chez moi tout s'est bien passé. Excel est à jour et windows 10 également.

img3

Tu as une piste sérieuse mais pense à revoir les listes de validation comme je te l'ai conseillé.

=DECALER('Base donnés'!$I$2;;;NBVAL('Base donnés'!$I:$I)-1)
img2

Cordialement

Merci encore pour ta réponse!

Tu as raison que sa fonctionne de la façon que tu as procédé mais le problème est vraiment au niveau d'une copie externe soit dans un nouveau classeur...

J'ai aussi corrigé le code que tu ma conseillé et sa fonctionne bien mais toujours pas dans un nouveau classeur...

Il est possible que si tu réussi à le faire fonctionner dans un nouveau classeur, le probleme vient p-e de parametre externe ou dans option de excel....

Je vais creuser de mon côter encore car c'est mon fichier quotidien d'entreprise et je dois trouver...

Merci encore

Re,

Pour te dépanner, tu mets les données de ta liste de validation sur la feuille à copier.

En procédant ainsi ça fonctionne.

On dirait qu'il réside un vieux reste avec la version d'excel 2003 où il fallait que les données soient dans la même feuille.

Ton fichier n'est pas si ancien tout de même ou il n'a pas été enregistré en .xls au début ?

Je réfléchis en même temps que je tape. C'est peut-être une mauvaise piste.

Je continue mes tests.

Bon courage en attendant.

En fouinant sur le web, j'ai trouvé ce sujet:

Re,

Pour te dépanner, tu mets les données de ta liste de validation sur la feuille à copier.

En procédant ainsi ça fonctionne.

On dirait qu'il réside un vieux reste avec la version d'excel 2003 où il fallait que les données soient dans la même feuille.

Ton fichier n'est pas si ancien tout de même ou il n'a pas été enregistré en .xls au début ?

Je réfléchis en même temps que je tape. C'est peut-être une mauvaise piste.

Je continue mes tests.

Bon courage en attendant.

Bonjour ddetp88,

Il esrt possible que le fichier provienne d'excel 2003 puisque j'ai initialement utilisé un template

du fichier existant sur le web et j'ai apporter nombre de modification par la suite.

Je ne sais pas non plus comment procéder pour mettre les données de validation sur la feuille à copier

ou plutôt, que voulez vous dire...

J'ai aussi vérifié le lien que vous m'avez envoyé et tout est correctement appliqué.

Il est possible aussi que se soit une cause perdu mais sachant vos compétence et

vos réponse pertinente, je relance une dernière fois le dossier afin de tenté un dernier

essaie et sauver de nombreuse heures lors de la confection de mes soumissions..

Cordialement,

Steve

Rechercher des sujets similaires à "copier classeur incluant liste deroulante nouveau"