Enregistrer une date
Bonjour
je me trouve devant un petit soucis , sur une feuille de mon classeur en cellule A2 j'ai une datation automatique du type :
=aujourdhui() lorsque je souhaite enregistrer cette feuille vers un classeur d'archivage dont l'onglet devrait porter la meme date
j'ai une erreur du type '1004' " le nom de la feuille n'est pas valide , verifier que le nom de la feuille ne comporte aucun caractère du type ;
:/ * [ou] \ pourtant j'ai opté pour un format de cellule permettant de mettre la date sous la forme : 06 octobre 2011 , mais j'ai toujours
le même message ; erreur 1004.
avec une ligne surlignée sur mon code qui est le suivant ::
Sub Copie_Feuille_journalière()
Dim Chemin As String, Référence_Nom As String
Chemin = ThisWorkbook.Path
Workbooks.Open Filename:=Chemin & "\FEUILLES JOURNALIERES.xls"
Windows("GESTION DES LAISSEZ PASSER.xls").Activate
Sheets("FEUILLE JOURNALIERE").Select
Référence_Nom = Range("A2")
Sheets("FEUILLE JOURNALIERE").Copy Before:=Workbooks("FEUILLES JOURNALIERES.xls").Sheets(1)
ActiveSheet.Name = Référence_Nom
With ActiveSheet.Range("A2,C31,C33,C37,C39,F31,F33,F37,F39,J31,L31,J34,L34,J37,L37,L40")
.Value = .Value
End With
Application.CutCopyMode = False
Windows("FEUILLES JOURNALIERES.xls").Close SaveChanges:=True
Sheets("RESEAU").Select
End Sub
et la ligne surlignée en jaune est :
ActiveSheet.Name = Référence_Nom
Vous remerciant pour tout remarque relative à cette question
C'est parce qu'en A2, ta date comporte des caractères interdits ( /, \, ], [ ... ).
Une solution, mets le code suivant dans un module :
Function replaceArray(texte As String, newText As String)
'fonction de remplacement des caractères interdits dans le nom d'une feuille
replaceArray = Replace( _
Replace( _
Replace( _
Replace( _
Replace( _
Replace( _
Replace(texte, _
":", newText), _
"\", newText), _
"/", newText), _
"?", newText), _
"*", newText), _
"[", newText), _
"]", newText)
End Function
Ensuite remplace la ligne :
ActiveSheet.Name = Référence_Nom
par
ActiveSheet.Name = replaceArray(Référence_Nom, " ")
Bonjour
Si j'ai bien lu
rocket4 a écrit :j'ai opté pour un format de cellule permettant de mettre la date sous la forme : 06 octobre 2011
Remplaces
Référence_Nom = Range("A2")
par
Référence_Nom = Range("A2").Text
Merci à tout les deux pour vos réponses tres efficaces ! une dernière question relative au code precedent
en ajoutant .Text apres Rang("A2") , j'obtiens apres enregistrement de ma feuille dans classeur d'archive
des dates aux cellules ou il ne faudrait pas :
With ActiveSheet.Range("A2,C31,C33,C37,C39,F31,F33,F37,F39,J31,L31,J34,L34,J37,L37,L40")
.Value = .Value
End With
toutes les cellules dans la parenthèse , après Range sont affectés de la date , alors que je voulais simplement recopier leur contenues
est ce normal d'apres le code ?
Merci
Bonjour
Ce n'est pas en ajoutant .Text que tu as ça
Modifies ton code comme ceci
Sub Copie_Feuille_journalière()
Dim Chemin As String, Référence_Nom As String
Dim Cel As Range
Chemin = ThisWorkbook.Path
Workbooks.Open Filename:=Chemin & "\FEUILLES JOURNALIERES.xls"
Windows("GESTION DES LAISSEZ PASSER.xls").Activate
Sheets("FEUILLE JOURNALIERE").Select
Référence_Nom = Range("A2").Text
Sheets("FEUILLE JOURNALIERE").Copy Before:=Workbooks("FEUILLES JOURNALIERES.xls").Sheets(1)
ActiveSheet.Name = Référence_Nom
For Each Cel In Range("A2,C31, C33, C37, C39, F31, F33, F37, F39, J31, L31, J34, L34, J37, L37, L40")
Cel.Value = Cel.Value
Next Cel
Application.CutCopyMode = False
Windows("FEUILLES JOURNALIERES.xls").Close SaveChanges:=True
Sheets("RESEAU").Select
End Sub
Pas d'autre solution pour le moment
Edit : Vérifies si des soucis avec ce code
Sub Copie_Feuille_journalière()
Dim Chemin As String, Référence_Nom As String
Chemin = ThisWorkbook.Path
Workbooks.Open Filename:=Chemin & "\FEUILLES JOURNALIERES.xls"
Windows("GESTION DES LAISSEZ PASSER.xls").Activate
Sheets("FEUILLE JOURNALIERE").Select
Référence_Nom = Range("A2").Text
Sheets("FEUILLE JOURNALIERE").Copy Before:=Workbooks("FEUILLES JOURNALIERES.xls").Sheets(1)
ActiveSheet.Name = Référence_Nom
With Range("A2:L40")
.Value = .Value
End With
Application.CutCopyMode = False
Windows("FEUILLES JOURNALIERES.xls").Close SaveChanges:=True
Sheets("RESEAU").Select
End Sub
Merci pour ton code remanié il marche tres bien !!!
re....
Une toute dernière question concernant l'enregistrement de ma feuille me viens à l'esprit ,celle ci dispose de boutons affectés chacun d'une macro commande j'en ai 3 en tout , est il possible d'enregistrer ma feuille sans ces derniers par une instruction spécifique ?
Merci à vous
. j'ai essayé d'integrer la ligne de code suivante à mon precedent code
Sheets("LAISSEZ PASSER").Shapes.SelectAll
Selection.Delete
j'ai eu le droit à un message de memoire insuffisante ! ... c'est un peu étonnant sachant qu'excel n'emploi pas autant de ressource
memoire !!!