Changer nom de feuille à nom variable...

Résolu/Fermé
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 - 7 déc. 2016 à 23:00
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 - 4 janv. 2017 à 22:41
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

f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
8 déc. 2016 à 09:04
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.
0
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
3 janv. 2017 à 22:03
Vous avez raison je me suis compliqué mon pb...
0
Utilisateur anonyme
8 déc. 2016 à 09:10
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.  :)
0
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
Modifié par GermPeru le 3/01/2017 à 22:44
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.
0
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
3 janv. 2017 à 22:11
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
0
Bonjour Germain,

Pour ton ouverture du fichier originel, supprime « Set wb = » qui est devant =>
Workbooks.Open("C:\Users\user\Desktop\guardarcomo.xlsm")

Donc la variable wb ne sert plus, et tu peux supprimer sa déclaration ;
ainsi, tu peux enlever cette ligne : Dim wb As Workbook

Cordialement..  :)
0
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 > Utilisateur anonyme
4 janv. 2017 à 14:02
Bonjour et merci Albank,

J´avais essayé cette posibilité mais cela ne fonctionne pas. L'application excel reste ouverte mais se n´ouvre pas le document "guardarcomo".
Et de plus savez vous pourquoi le document enregistré ne comporte pas de mot de passe?

Cordialement
0
Utilisateur anonyme > GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
4 janv. 2017 à 14:56
 
Je te propose ce code VBA :


Option Explicit


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 actuel sous un autre nom
  ActiveWorkbook.SaveAs Chemin & NF, 52, "Dispensacion"
  
  ' attention : ce classeur est resté ouvert ; si on le ferme, la macro
  ' actuelle s'arrêtera (il me semble bien, je te laisse le vérifier).
  
  ' ouverture du fichier originel
  Workbooks.Open "C:\Users\user\Desktop\guardarcomo.xlsm"
  
  ' le 1er classeur (sauvegardé sous un autre nom) est resté ouvert,
  ' donc tu as maintenant 2 classeurs ouverts.
  
  ' fermeture du classeur actuel
  ActiveWorkbook.Close

End Sub


À te lire pour avoir ton avis, albkan. Cordialement.  :)
 
0
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 > Utilisateur anonyme
4 janv. 2017 à 15:24
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 :)
0
Utilisateur anonyme > GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
Modifié par albkan le 4/01/2017 à 16:43
 
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.  :)
 
0
Utilisateur anonyme
4 janv. 2017 à 19:32
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  ;)
 
0
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
4 janv. 2017 à 20:19
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 :)
0
Utilisateur anonyme > GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
4 janv. 2017 à 22:24
 
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.  :)
 
0
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 > Utilisateur anonyme
Modifié par GermPeru le 4/01/2017 à 22:44
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!!
0