Changer nom de feuille à nom variable... [Résolu/Fermé]

Signaler
Messages postés
172
Date d'inscription
mercredi 7 décembre 2016
Statut
Membre
Dernière intervention
27 mars 2018
-
Messages postés
172
Date d'inscription
mercredi 7 décembre 2016
Statut
Membre
Dernière intervention
27 mars 2018
-
Bonjour, 

Merci à tous pour vos partages ça aide énormément les débutants dont je fais partie. 

L'objectif étant d'extraire les données requise du SAP et de traitée ces données par excel. 

Quand se créer le document le nom du classeur et de la feuille qui sont alors créé ont des noms variables, dépendant de mon produit. 

Je cherche à renomer la feuille qui a un nom variable et d'en extraire les données nécessaires dans une nouvelle feuille puis enregistrer cette nouvelle feuille dans un nouveau fichier Excel. Afin de créer une base de donnée. 

Mon problème de nom de feuille à nom variable m'empêche d'exécuter ma procédure quand je change de produit. Et de faire appel à ma feuille dont je ne connais pas le nom

Merci d'avance

4 réponses

Messages postés
15767
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 mai 2021
1 489
Bonjour,
à nom variable m'empêche d'exécuter ma procédure
Ben non, au debut de cette procedure cherchez le nom de la feuille.
Messages postés
172
Date d'inscription
mercredi 7 décembre 2016
Statut
Membre
Dernière intervention
27 mars 2018

Vous avez raison je me suis compliqué mon pb...

Bonjour GermPeru, bonjour le forum,

Je te laisse lire mon message #1 ; si ma réponse te convient, n'oublies
pas de revenir sur ce sujet, en haut de page, pour cliquer sur le lien
« Marquer comme résolu ». Et à l'avenir, évite de créer plus d'un sujet
pour le même problème !

Cordialement.  :)
Messages postés
172
Date d'inscription
mercredi 7 décembre 2016
Statut
Membre
Dernière intervention
27 mars 2018

Merci de votre réponse cela m´aider a comprendre le fonctionnement de nom des feuilles.
J´avais publier deux fois le meme probleme pcq je návais pas créer de comptee et que je ne savais pas trop comment faire.
Messages postés
172
Date d'inscription
mercredi 7 décembre 2016
Statut
Membre
Dernière intervention
27 mars 2018

Bonjour a tous et merci de vos conseils,

Voila ou jén suis avec mon code, en faite je colle mes données extraite dans un nouveu fichier et depuis ce fichier j enregistre.

Mes blocages sont les suivant:
-je n´arrive pas a mettre un mot de passe sur le nouveau fichier créé, j´ai essayé de différentes maniéres mais rien ne se passe, le fichier se créé mais pas de mdp

-jáimerais lorsque je lance ma maccro enregistrer mon nouveau fichier, jusque la cela fonctionne, mais aussi ouvrir le fichier originel "guardarcomo", mais rien ne se passe

Je vous indique le code.

Sub Guardar()

Dim wb As Workbook
Dim Chemin As String


Chemin = "C:\Users\user\Desktop\lotes\"

'on cree et on renomme un nouveau classeur'
ActiveWorkbook.SaveAs Filename:=Chemin & Worksheets("Hoja1").[F2].Value & " " & Worksheets("Hoja1").[D2] & " " & Format(Date, "yyyy-mm-dd") & ".xlsm"
'mdp
ActiveWorkbook.Protect Password:="Dispensacion"

'ouverture du fichier originel
Set wb = Workbooks.Open("C:\Users\user\Desktop\guardarcomo.xlsm")


'fermeture du fichier
ActiveWorkbook.Close


End Sub

Merci d´avance,

Germain
Messages postés
172
Date d'inscription
mercredi 7 décembre 2016
Statut
Membre
Dernière intervention
27 mars 2018
> Utilisateur anonyme
Merci de ta reponse,

Du coup j´ai plein de question:
-un classeur est ouvert mais c´est le nouveau classeur créé, je pense pcq cela reste l´activeWorkbook
-maintenant il y a un mot de passe pour l´ouverture de ce fichier, GENIAL mais a quel moment dans le code tu définis le mdp ?
- pourquoi en début de code tu définis option explicit?
-pourquoi tu définis NF a quoi te sers cette variable?

Merci :)
Utilisateur anonyme >
Messages postés
172
Date d'inscription
mercredi 7 décembre 2016
Statut
Membre
Dernière intervention
27 mars 2018

 
Quand on ouvre un fichier, il apparaît dans la fenêtre active,
et ce fichier devient alors le classeur actif : ActiveWorkbook

-----------------------------------------------------

NF est une variable de type String ; c'est donc une chaîne de caractères.
Je l'ai appelée ainsi pour : « Nom Fichier » ; ensuite, je l'ai bien affectée
avec ton nom de fichier :

.[F2] & " " & .[D2] & " " & Format(Date, "yyyy-mm-dd") & ".xlsm"


Si tu lances toujours cette macro depuis ta feuille "Hoja1", tu peux remplacer

  With Worksheets("Hoja1")
    NF = .[F2] & " " & .[D2] & " " & Format(Date, "yyyy-mm-dd") & ".xlsm"
  End With

par :

  NF = [F2] & " " & [D2] & " " & Format(Date, "yyyy-mm-dd") & ".xlsm"

Attention : il n'y a plus de point devant [F2] et [D2] !

Même si NF est utilisé une fois seulement, je préfère le faire ainsi pour
la lisibilité du code : l'instruction SaveAs devient bien plus claire !

Autre option : se passer de NF et utiliser le caractère de continuation
de ligne « _ », mais je préfère la 1ère façon ; à toi de choisir !  ;)

-----------------------------------------------------

Voici l'instruction qui sauvegarde le classeur sous un autre nom :
SaveAs nom_du_classeur, format_du_fichier, mot_de_passe

nom_du_classeur : Chemin & NF ; comme ton Chemin se termine par « \ »,
c'est OK ; sinon, il aurait fallu mettre : Chemin & "\" & NF

format_du_fichier : 52 correspond à ce format de fichier (avec macros) :
xlOpenXMLWorkbookMacroEnabled

mot_de_passe : c'est ici qu'il faut mettre ton mot de passe, celui que
tu veux pour le classeur que tu enregistres sous un autre nom.

-----------------------------------------------------

Si on met « Option Explicit », il doit obligatoirement être au début du Module.

Quand on le met, ça oblige le programmeur à déclarer toutes les variables
et constantes utilisées. Ainsi, lors de la compilation du programme, ça va
s'arrêter sur une erreur si une variable ou constante n'a pas été déclarée.
Idem si on appelle une function ou une sub dont le nom est inexistant.

Souvent, c'est un nom mal orthographié qui cause l'erreur ; rappel :
Une variable déclarée, mais sans type associé a le type Variant.

-----------------------------------------------------

Dans mon code VBA, après les avoir lus, tu peux bien sûr
supprimer tous les commentaires qui te sont inutiles.

-----------------------------------------------------

Merci de répondre à ce message, ainsi qu'à celui-ci.  :)
 
Messages postés
172
Date d'inscription
mercredi 7 décembre 2016
Statut
Membre
Dernière intervention
27 mars 2018
> Utilisateur anonyme
Merci bcp de la lecon, fort instructif!!!

Lorsque je lance la macro depuis le fichier "guardarcomo", qui est mon fichier originel me permettant d´enreistrer mes fichiers, le fichier qui reste ouvert est celui nouvelement créé et non le fichier originel "guardarcomo".
Pcq lorsque je lance la macro depuis le fichier nouvelement créé j'ai bel et bien l'ouverture du fichier gardarcom, meme si lénregistrement deviens imposible.

Comme tu me l'as expliqué, l activeworkbook est celui que l´on a ouvert donc gaurdarcomo, et donc celui qui se ferme lors de l´instruction:

 ActiveWorkbook.Close


Comment je peux faire pour rendre l'activeworkbook le nouvelement créé et ainsi le fermer?

Encore merci pour ton temps, ta patience et ta pédagogie :))
Utilisateur anonyme >
Messages postés
172
Date d'inscription
mercredi 7 décembre 2016
Statut
Membre
Dernière intervention
27 mars 2018

 
Je crois que tu as complètement oublié ton sujet précédent ; il se trouve ici :
Forum « Programmation: VB / VBA », page 3 : « changer le nom d'une feuille ».
Sujet du 7 décembre 2016, de GermPeru ; c'est bien toi, n'est ce pas ?  ;)

Donc merci de répondre d'abord à mon message #1.
Pour la suite, on verra plus tard...  :)
 
Messages postés
172
Date d'inscription
mercredi 7 décembre 2016
Statut
Membre
Dernière intervention
27 mars 2018
> Utilisateur anonyme
Merci tu as raison c'est une autre question qui nést plus en rapport avec le theme.
Comme indiqué dans ma réponse je ne peux pas indiquer comme résolu car cést la premiére question que j´avais posé sur le forum et je návais pas encore créé mon compte, donc je n'ai pas la possibilité díndiquer "Résolu"

Dans tous les cas un grand merci

Réponse à ton message #11.

----------------------------------------

Voici quels sont tes 2 fichiers :

Tu as le fichier guardarcomo.xlsm ; pour simplifier, on va appeler
ton 2ème fichier : Fichier2.xlsm ; c'est celui dont le nom est créé
avec [F2] et [D2] (variable NF).

----------------------------------------

Chronologie des diverses étapes :

Au départ, tu as ouvert le fichier guardarcomo.xlsm ; c'est donc
le classeur actif, qui apparaît dans la fenêtre active.

Puis la macro enregistre ce fichier sous un autre nom (nom NF),
avec l'instruction SaveAs (qui aussi lui met ton mot de passe).

Le fichier qui vient d'être sauvegardé, donc Fichier2.xlsm
devient alors le classeur actif.

Donc avec l'instruction ActiveWorkbook.Close
c'est bien Fichier2.xlsm qui est fermé et pas
guardarcomo.xlsm

Après fermeture de Fichier2.xlsm c'est ton dernier fichier ouvert
qui devient actif, en l'occurence : guardarcomo.xlsm

----------------------------------------

Si tu ne ferme pas Fichier2.xlsm et que tu veux retourner sur
ton classeur originel : Workbooks("guardarcomo").Select

----------------------------------------

rappel : mon pseudo s'écrit albkan, pas Albank  ;)
 
Messages postés
172
Date d'inscription
mercredi 7 décembre 2016
Statut
Membre
Dernière intervention
27 mars 2018

Dsl pour m´etre trompé sur ton pseudo...

Je ne suis pas tout a fait dáccord sur la chronologie, le fait est que dans le code:

Sub Guardar()

....
  
  ' ouverture du fichier originel
  Workbooks.Open "C:\Users\user\Desktop\guardarcomo.xlsm"
  

  ' fermeture du classeur actuel
  ActiveWorkbook.Close

End Sub


Ce qui fait que le classeur actif est guardarcomo... et donc celui qui se ferme

J'ai donc essayé de rendre le classeur actif celui créé:

Workbooks(Chemin & NF).Select


Mais cela ne marche pas...


Merci albkan :)
Utilisateur anonyme >
Messages postés
172
Date d'inscription
mercredi 7 décembre 2016
Statut
Membre
Dernière intervention
27 mars 2018

 
Oui, tu as tout à fait raison ; désolé : je me suis trompé !

En effet, après l'instruction ActiveWorkbook.SaveAs ...
le fichier originel guardarcomo.xlsm n'est plus ouvert.

Je te propose donc ce nouveau code VBA :


Option Explicit


' Cette macro est normalement dans le classeur guardarcomo.xlsm ; donc quand
' tu lances l'exécution, c'est guardarcomo.xlsm qui est le classeur actif.

Sub Guardar()

  Dim Chemin As String, NF As String: Chemin = "C:\Users\user\Desktop\lotes\"
  With Worksheets("Hoja1")
    NF = .[F2] & " " & .[D2] & " " & Format(Date, "yyyy-mm-dd") & ".xlsm"
  End With
  
  ' On sauvegarde le classeur actif guardarcomo.xlsm sous le nom NF,
  ' et suite à cela, le seul classeur ouvert est NF.
  
  ActiveWorkbook.SaveAs Chemin & NF, 52, "Dispensacion"
  
  ' NF est donc le seul classeur ouvert, et c'est le classeur actif.
  ' AVANT de le refermer, on ouvre guardarcomo.xlsm
  
  Workbooks.Open "guardarcomo.xlsm"
  
  ' Tu as donc maintenant tes 2 fichiers ouverts en même temps :
  ' NF et guardarcomo.xlsm ; et c'est ce dernier qui est actif.
  
  ' Comme guardarcomo est actif, le plus simple pour fermer NF est :
  
  Workbooks(NF).Close

End Sub


Dis-moi ce que tu en penses, et si ça te convient.  :)
 
Messages postés
172
Date d'inscription
mercredi 7 décembre 2016
Statut
Membre
Dernière intervention
27 mars 2018
> Utilisateur anonyme
C´est que je suis tres concentré sur les conseils que l´on me donne :)


J´ai juste remplacé ce bout de code:

  Workbooks.Open "guardarcomo.xlsm"


par

  Workbooks.Open "C:\Users\user\Desktop\guardarcomo.xlsm"


Et cela marche a merveille, si je pourrais je mettrais un double résolu pour toi albkan ;)

Je n´ai pas encore la bonne logique d'ecriture mais grâce a des conseils avisé je sens que je comprends pluss mieuxx

MERCI!!