Génerer le nom d'un classeur

Bonjour à tous. j’ai besoin de votre aide.
je souhaite créer 20 fichiers automatiquement à l’aide d’une macro les noms de ces classeurs sont dans la colonne A de mon fichier qui sert de base pour la macro
A
nom1
nom2
nom3

nom20
voici mon code mais ça ne marche pas

Sub CreerClasseur()
'Etape 1: Créez un nouveau classeur
For i = 1 To 20
nom = Range(« A » & i).Value
Workbooks.Add
ActiveWorkbook.SaveAs Filename:=« C:\Users\s.oulai\Desktop\mondossier\nom.xlsx »
Next i
Application.DisplayAlerts = False
'Étape 2: Enregistrez la feuille de calcul nouvellement créée
Application.DisplayAlerts = True
End Sub

il crée un seul fichier quelque soit la modification que je fais du code!

Bonjour

Dans ton code le nom d’enregistrement est affecté à une variable : nom

nom = Range(« A » & i).Value

si tu veux faire appel à cette variable dans l’instruction d’enregistrement il faut la mettre comme ceci :

ActiveWorkbook.SaveAs Filename:=« C:\Users\s.oulai\Desktop\mondossier\ " & nom & ".xlsx »

Cela devrait mieux aller

Corriges et reessaies

Dis moi

Merci mais ça ne marche pas.
Avec ce code, il crée un seul classeur et prend le nom1.
ensuite message d’erreur "la methode 'saveas '_workbooks’a échoué

Sub CreerClasseur()
Dim nom As String
'Etape 1: Créez un nouveau classeur
For i = 1 To 20
nom = Range(" A" & i).Value
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="C:\Users\Desktop\ESSAI\ " & nom & ".xlsx "
Next i
Application.DisplayAlerts = False
'Étape 2: Enregistrez la feuille de calcul nouvellement créée
Application.DisplayAlerts = True
End Sub

Rajoute après cette ligne de code :

ActiveWorkbook.SaveAs Filename:="C:\Users\Desktop\ESSAI\ " & nom & ".xlsx "

Cette instruction supplémentaire :

ActiveWorkbook.Close

Sinon Il me faut ton fichier pour cerner ce qui cloche
Transmet le moi sans donnée confidentiel que je regarde et te dis

creation.xlsm (15,9 Ko)

creation.xlsm (16,0 Ko)

Je viens d’exécuter la macro et cela fonctionne du feu de dieu !!!

Essaies en remplaçant cette ligne de code :

ActiveWorkbook.SaveAs Filename:="C:\Users\Desktop\ESSAI\ " & nom & ".xlsx "

par cette ligne de code :

ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\ " & nom & ".xlsx "

Les fichiers sont créés dans le même répertoire que celui de l’outil

Si cela fonctionne le PB vient du chemin que tu as intégré ici :

"C:\Users\Desktop\ESSAI\ "

déjà en bout enlève l’espace mets comme ceci :

après ESSAI\ pas d’espace

Cette espace je l’ai volontairement rajouté pour permettre au caractère antislash d’être présent sinon il disparait et devient invisible à la lecture pas d’autre choix

Puis vérifies que ton chemin et ton dossier soit bien existant de manière conforme

Corrige éventuellement et réessaies

Fais moi un retour

1 « J'aime »

Merci!!, ça marche.
puisque nous y sommes, je souhaite maintenant créer un autre classeur qui fusionne tous les 20 classeurs en un seul. ensuite dans la colonne C il met le nom de chaque fichier

exemple: si une ligne vient de la feuille « nom3 », il mettra en colonne C « nom3 »

Ravi que tu ais réussi à le faire fonctionner

Qu’entends tu par :

« puisque nous y sommes, je souhaite maintenant créer un autre classeur qui fusionne tous les 20 classeurs en un seul. ensuite dans la colonne C il met le nom de chaque fichier »

Que doit on retrouver dans ce classeur provenant des 20 autres à part leur nom en colonne C

Merci de préciser le descriptif de cette fusion (onglets cellules colonnes etc…)

  1. on récupère le contenu des colonne A et B de chaque feuille (de le ligne 2 à la dernière ligne non vide)
  2. ensuite on les fusionne dans la nouvelle feuille créée.
  3. il supprime les éventuels doublon
    4 . le nouveau fichier se met à jour automatiquement quand l’un des 20 fichier est modifié

« 1. on récupère le contenu des colonne A et B de chaque feuille (de le ligne 2 à la dernière ligne non vide) »

Chaque fichiers a plusieurs feuilles ?
Tous ont exactement les même feuilles (même structure même nom pour chacune d’elles)

« 2. ensuite on les fusionne dans la nouvelle feuille créée. »

C’est à dire les uns à la suite des autres colonne A et B ? avec leur nom de fichier en colonne C ?

« 3.il supprime les éventuels doublon »

Il faut préciser sur quoi se base t’on pour estimer le doublon

« 4 . le nouveau fichier se met à jour automatiquement quand l’un des 20 fichier est modifié »

Nécessité pour chacun des 20 fichiers d’intégrer un traitement à cette fin

Merci de m’apporter les réponses à ces questions

Merci pour l’attention FFO,

  1. je souhaite une macro qui traite les deux cas. mais à la base mes fichiers ont une seule feuille
    2.on récupère toute la ligne et on met à la suite . les éléments de a dans la même colonne , ce de b également. ensuite en C on met le nom du fichier d’où vient chaque ligne
  2. il y a doublon sur les lignes sont identiques (on part sur cette base). éventuellement je pourrai modifier
  3. la structure des 20 fichiers n’est jamais modifier. juste que l’utilisateur entre de nouvelle ligne au besoin. il faut donc que le fichier de fusion puisse prendre ça en compte lorsqu’on l’active

« 1. la structure des 20 fichiers n’est jamais modifier. juste que l’utilisateur entre de nouvelle ligne au besoin. il faut donc que le fichier de fusion puisse prendre ça en compte lorsqu’on l’active »

Pour mettre à jour le fichier global des nouvelles saisies soit chaque fichier est doté d une procédure qui reporte toute ses nouvelles saisies dans celui-ci soit cycliquement un traitement du fichier global scrute tous les fichiers et récupère les nouvelles entrées à prévoir un repère pour les cerner (couleur marque ou autre) soit le traitement principal de ce fichier global à chaque exécution fait un nettoyage total de ce qu il possède pour une réintégration de l ensemble des données de chaque fichier

À toi de me dire ce qui te convient le mieux

Je préfère la 2eme méthode (travailler depuis le fichier global)

Ok mais en rajoutant que les nouvelles saisies (prévoir un marquage couleur ou autre pour les repérer) ou en réintégrant intégralement chaque fichier après nettoyage du global ?

Marquer en couleur dans le fichier initiale si possible
Ou encore mettre la date de la dernière mise à jour de chaque fichier dans une autre colonne

En tout cas, je recherche la date de mise à jour. Tant que c’est possible, je vais prendre et adapter. Merci d’avance

Bonjour
Le marquage à mettre en place est pour les fichiers cibles afin de cerner rapidement pour chacun les nouvelles saisies sinon on sera contraint de balayer tout leur enregistrement un par un pour prendre ceux qui doivent l être
J osé espérer un nombre limité à analyser dans cet hypothèse car sachant qu ils sont au nombre de 20 actuellement donc peut être plus à l avenir bonjour le temps de traitement
Si un repère est à disposition ce sera un gain de temps non négligeable
Autre question ces fichiers à traiter seront ils tous dans un seul et même répertoire de manière isolé sans autres fichier sinon seront ils mélangés à d autres comment dans ce cas les distinguer partie de leur nom spécifique par exemple
De même concernant pour chacun leur onglet à prendre en considération auront ils pour tous le même nom et lequel ?

Merci de me dire

  1. je suis d’accord pour le marquage que tu proposes
    2.effectivement on peut avoir plus de 20 à l’avenir
    3.les fichiers seront créés dans un même répertoire. c’est après que je vais les ranger dans d’autres dossier
  2. les noms des onglets varient. pour l’instant on prendra « fuill1 ». sinon on pourrait avoir d’autre non
  3. LES NOMS DES ONGLETS SNT LES MEMES POUR TOUS LES FICHIERS

« je suis d’accord pour le marquage que tu proposes »

Le traitement peux marquer les enregistrements qu’il récupère soit en les colorant en vert par exemple soit en utilisant un caractère par exemple « X » mis dans une colonne du même onglet ou d’un autre onglet
A toi de me dire

« les fichiers seront créés dans un même répertoire. c’est après que je vais les ranger dans d’autres dossier »

seuls les fichiers de ce répertoire seront traités et il doivent être isolés (aucun autre fichier dans ce répertoire)

« les noms des onglets varient. pour l’instant on prendra « fuill1 ». sinon on pourrait avoir d’autre nom »

Le traitement doit connaitre le nom de l’onglet à utiliser il faudra donc dans une cellule du fichier global qu’il soit identifié et mis à jour des nouvelles appellations

Merci donc de me confirmer ces dispositions