Qui d'entre vous aurait l'extrème gentillesse de me dire pourquoi cette sub,
sous la signature, plante ?
- Elle oublie parfois une journée... et pas toujours la même.
- et dans ce cas la cellule O3 de l'onglet qui suit le manquant contient la
date manquante.
(La formule en O3 avant recopiage spécial est : ="Montexte -
"&STXT(CELLULE("nomfichier");TROUVE("]";CELLULE("nomfichier"))+1;32)
Elle me permet de récupérer la date avec :
=DATE(DROITE(O3;2);GAUCHE(DROITE(O3;5);2);GAUCHE(DROITE(O3;8);2))+36525)
Un peu tordu, mais je n'ai pas trouvé mieux :-(
Merci en tous cas d'avoir lu...
Toutes vos suggestions seront les bienvenues.
--
Bien amicordialement,
P. Bastard
***********************************************************
Option Explicit
Private Sub CréationDesPagesJour()
'Avec l'aide de MPFE et en particulier Denis M
'Déclaration des variables
Dim MaDate As Variant
Dim Sh As Worksheet
Dim LastDay As Byte
Dim Annee As Integer
Dim LeMois As Byte
Dim A As Byte
'Gestion des erreurs
On Error Resume Next
'Désactivation de la mise à jour de l'écran
Application.ScreenUpdating = False
'Désactivation des procédures événementielles
Application.EnableEvents = False
'Test pour vérifier que les pages n'ont pas encore été créées
If Sheets.Count = 5 Then
'Demande à l'usager le mois.
Do
MaDate = InputBox("Entrez une date du mois pour lequel il faut"
& vbLf & _
"créer une feuille pour chacun des jours." &
vbLf & vbLf & _
"Exemple : 1/01/2006", "Une feuille par jour")
'Si l'usager annule l'opération
If MaDate = "" Then Exit Sub
If Not IsDate(MaDate) Then
MsgBox "La donnée saisie n'est " & _
"pas un format date reconnu par excel."
End If
Loop Until IsDate(MaDate) Or MaDate = "" = True
'Affectation des valeurs aux variables.
Annee = Year(MaDate)
LeMois = Month(MaDate)
LastDay = Day(DateSerial(Annee, LeMois + 1, 0))
On Error Resume Next
Application.ScreenUpdating = False
If Err <> 0 Then Err = 0
'La boucle copie "Modèle" autant de fois qu'il y a de jours
'et renomme chaque feuille avec la date.
For A = 1 To LastDay Step 1
Sheets("Modèle").Select
Sheets("Modèle").Copy Before:=Sheets("Modèle")
Set Sh = Worksheets(Worksheets.Count - 2)
With Sh
.Visible = True
.Name = Format(DateSerial(Annee, LeMois, A), "dd.mm.yy")
'Recopie de la valeur de la formule en O3
Calculate
Range("O3").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
If Err <> 0 Then
Err = 0
End If
End With
'Boucle pour rediriger les hyperliens de "Modèle" vers la feuille créée.
Dim Hl As Hyperlink
For Each Hl In ActiveSheet.Hyperlinks
Hl.SubAddress = Replace(Hl.SubAddress, "Modèle!", "")
Next Hl
Next
Application.DisplayAlerts = True
'Vidage des variables
Set Sh = Nothing
Set MaDate = Nothing
Set Hl = Nothing
'Masque les feuilles "Premier" "Administration" et "Modèle"
Sheets(Array("Premier", "Administration", "Modèle")).Visible = False
'Réactivation des procédures événementielles
Application.EnableEvents = True
'Lancement de la private sub qui liste les feuilles dans le tableau de
"Total"
ListerFeuilles
End
End If
End Sub
'*********************************************************************************
--
Bien amicordialement,
P. Bastard
Il ne faut, par principe, jamais faire l'impasse sur le 2° argument (soi-disant facultatif) de la fonction CELLULE Cela a pour effet de rendre la fonction non volatile (pas de recalcul) Donc, pour ton cas, corriger en STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
Il ne faut, par principe, jamais faire l'impasse sur le 2° argument (soi-disant
facultatif) de la fonction CELLULE
Cela a pour effet de rendre la fonction non volatile (pas de recalcul)
Donc, pour ton cas, corriger en
STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
Il ne faut, par principe, jamais faire l'impasse sur le 2° argument (soi-disant facultatif) de la fonction CELLULE Cela a pour effet de rendre la fonction non volatile (pas de recalcul) Donc, pour ton cas, corriger en STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
AV
Patrick BASTARD
Bonjour, *Alain*
Je te remercie.
Je corrige immédiatement. Je reviendrais à la charge si le défaut constaté persistait.
Il ne faut, par principe, jamais faire l'impasse sur le 2° argument (soi-disant facultatif) de la fonction CELLULE Cela a pour effet de rendre la fonction non volatile (pas de recalcul) Donc, pour ton cas, corriger en STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
AV
Bonjour, *Alain*
Je te remercie.
Je corrige immédiatement.
Je reviendrais à la charge si le défaut constaté persistait.
Il ne faut, par principe, jamais faire l'impasse sur le 2° argument
(soi-disant facultatif) de la fonction CELLULE
Cela a pour effet de rendre la fonction non volatile (pas de recalcul)
Donc, pour ton cas, corriger en
STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
Il ne faut, par principe, jamais faire l'impasse sur le 2° argument (soi-disant facultatif) de la fonction CELLULE Cela a pour effet de rendre la fonction non volatile (pas de recalcul) Donc, pour ton cas, corriger en STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
AV
Patrick BASTARD
Bonsoir à vous, toutes et tous.
Je reviens -hélàs.
J'ai effectué la modif que Alain m'as conseillée, et les dates correspondent désormais aux noms des onglets.
Cependant certains onglets ne sont parfois pas créés (pas toujours les mêmes...)
Y aurait-il une raison pour que ma boucle saute un -ou des- pas de manière aléatoire ?
Quelle erreur aurai-je commise ?
J'attends avec la plus grande impatience vos avis éclairés, avant d'arracher rageusement les quelques cheveux qui me restent.
Il ne faut, par principe, jamais faire l'impasse sur le 2° argument (soi-disant facultatif) de la fonction CELLULE Cela a pour effet de rendre la fonction non volatile (pas de recalcul) Donc, pour ton cas, corriger en STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
AV
Bonsoir à vous, toutes et tous.
Je reviens -hélàs.
J'ai effectué la modif que Alain m'as conseillée, et les dates correspondent
désormais aux noms des onglets.
Cependant certains onglets ne sont parfois pas créés (pas toujours les
mêmes...)
Y aurait-il une raison pour que ma boucle saute un -ou des- pas de manière
aléatoire ?
Quelle erreur aurai-je commise ?
J'attends avec la plus grande impatience vos avis éclairés, avant d'arracher
rageusement les quelques cheveux qui me restent.
Il ne faut, par principe, jamais faire l'impasse sur le 2° argument
(soi-disant facultatif) de la fonction CELLULE
Cela a pour effet de rendre la fonction non volatile (pas de recalcul)
Donc, pour ton cas, corriger en
STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
Il ne faut, par principe, jamais faire l'impasse sur le 2° argument (soi-disant facultatif) de la fonction CELLULE Cela a pour effet de rendre la fonction non volatile (pas de recalcul) Donc, pour ton cas, corriger en STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
AV
michdenis
Bonjour Patrick,
Essaie ceci, et lis les commentaires que j'ai ajoutées dans le code :
'------------------------------- Sub CréationDesPagesJour() 'Avec l'aide de MPFE et en particulier Denis M 'Déclaration des variables Dim MaDate As Variant Dim Sh As Worksheet Dim LastDay As Byte Dim Annee As Integer Dim LeMois As Byte Dim A As Byte Dim Hl As Hyperlink 'Préférable de définir toute tes variable 'en début de procédure
'Désactivation des procédures événementielles Application.EnableEvents = False 'Test pour vérifier que les pages n'ont pas encore été créées If Sheets.Count = 3 Then 'Demande à l'usager le mois. Do MaDate = InputBox("Entrez une date du mois pour lequel il faut" & vbLf & _ "créer une feuille pour chacun des jours." & vbLf & vbLf & _ "Exemple : 1/01/2006", "Une feuille par jour") 'Si l'usager annule l'opération If MaDate = "" Then Exit Sub If Not IsDate(MaDate) Then MsgBox "La donnée saisie n'est " & _ "pas un format date reconnu par excel." End If Loop Until IsDate(MaDate) = True 'Affectation des valeurs aux variables. Annee = Year(MaDate) LeMois = Month(MaDate) LastDay = Day(DateSerial(Annee, LeMois + 1, 0))
Application.ScreenUpdating = False 'La boucle copie "Modèle" autant de fois qu'il y a de jours 'et renomme chaque feuille avec la date. For A = 1 To LastDay Step 1 Sheets("Modèle").Copy before:=Sheets("Modèle") Set Sh = ActiveSheet With Sh .Visible = True .Name = Format(DateSerial(Annee, LeMois, A), "dd.mm.yy") 'Recopie de la valeur de la formule en O3 Calculate 'Je ne saisis pas ce que tu veux copier 'et où tu veux le faire ! Range("O3").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse End With 'Boucle pour rediriger les hyperliens de "Modèle" vers la feuille créée. For Each Hl In ActiveSheet.Hyperlinks Hl.SubAddress = Replace(Hl.SubAddress, "Modèle!", "") Next Hl Next
'Masque les feuilles "Premier" "Administration" et "Modèle" Sheets(Array("Premier", "Administration", "Modèle")).Visible = False 'Réactivation des procédures événementielles Application.EnableEvents = True 'Lancement de la private sub qui liste les feuilles dans le tableau de "Total" ListerFeuilles End 'Attention cette commande remet toutes les variables à 0 'Y compris les variables déclarées "Public" End If
'Vidage des variables -> ceci s'applique seulement pour 'les variables objets "Range", Worksheet, workbook ... 'MaDate n'est pas une variable objet mais une variable 'de type variant devant recevoir éventuellement une date ... Set Sh = Nothing ' Set MaDate = Nothing Set Hl = Nothing
End Sub '-------------------------------
Salutations!
"Patrick BASTARD" a écrit dans le message de news: Bonsoir à vous, toutes et tous.
Je reviens -hélàs.
J'ai effectué la modif que Alain m'as conseillée, et les dates correspondent désormais aux noms des onglets.
Cependant certains onglets ne sont parfois pas créés (pas toujours les mêmes...)
Y aurait-il une raison pour que ma boucle saute un -ou des- pas de manière aléatoire ?
Quelle erreur aurai-je commise ?
J'attends avec la plus grande impatience vos avis éclairés, avant d'arracher rageusement les quelques cheveux qui me restent.
Il ne faut, par principe, jamais faire l'impasse sur le 2° argument (soi-disant facultatif) de la fonction CELLULE Cela a pour effet de rendre la fonction non volatile (pas de recalcul) Donc, pour ton cas, corriger en STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
AV
Bonjour Patrick,
Essaie ceci, et lis les commentaires que j'ai ajoutées dans le code :
'-------------------------------
Sub CréationDesPagesJour()
'Avec l'aide de MPFE et en particulier Denis M
'Déclaration des variables
Dim MaDate As Variant
Dim Sh As Worksheet
Dim LastDay As Byte
Dim Annee As Integer
Dim LeMois As Byte
Dim A As Byte
Dim Hl As Hyperlink 'Préférable de définir toute tes variable
'en début de procédure
'Désactivation des procédures événementielles
Application.EnableEvents = False
'Test pour vérifier que les pages n'ont pas encore été créées
If Sheets.Count = 3 Then
'Demande à l'usager le mois.
Do
MaDate = InputBox("Entrez une date du mois pour lequel il faut" & vbLf & _
"créer une feuille pour chacun des jours." & vbLf & vbLf & _
"Exemple : 1/01/2006", "Une feuille par jour")
'Si l'usager annule l'opération
If MaDate = "" Then Exit Sub
If Not IsDate(MaDate) Then
MsgBox "La donnée saisie n'est " & _
"pas un format date reconnu par excel."
End If
Loop Until IsDate(MaDate) = True
'Affectation des valeurs aux variables.
Annee = Year(MaDate)
LeMois = Month(MaDate)
LastDay = Day(DateSerial(Annee, LeMois + 1, 0))
Application.ScreenUpdating = False
'La boucle copie "Modèle" autant de fois qu'il y a de jours
'et renomme chaque feuille avec la date.
For A = 1 To LastDay Step 1
Sheets("Modèle").Copy before:=Sheets("Modèle")
Set Sh = ActiveSheet
With Sh
.Visible = True
.Name = Format(DateSerial(Annee, LeMois, A), "dd.mm.yy")
'Recopie de la valeur de la formule en O3
Calculate
'Je ne saisis pas ce que tu veux copier
'et où tu veux le faire !
Range("O3").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
End With
'Boucle pour rediriger les hyperliens de "Modèle" vers la feuille créée.
For Each Hl In ActiveSheet.Hyperlinks
Hl.SubAddress = Replace(Hl.SubAddress, "Modèle!", "")
Next Hl
Next
'Masque les feuilles "Premier" "Administration" et "Modèle"
Sheets(Array("Premier", "Administration", "Modèle")).Visible = False
'Réactivation des procédures événementielles
Application.EnableEvents = True
'Lancement de la private sub qui liste les feuilles dans le tableau de "Total"
ListerFeuilles
End 'Attention cette commande remet toutes les variables à 0
'Y compris les variables déclarées "Public"
End If
'Vidage des variables -> ceci s'applique seulement pour
'les variables objets "Range", Worksheet, workbook ...
'MaDate n'est pas une variable objet mais une variable
'de type variant devant recevoir éventuellement une date ...
Set Sh = Nothing
' Set MaDate = Nothing
Set Hl = Nothing
End Sub
'-------------------------------
Salutations!
"Patrick BASTARD" <pasdespambastardp@freepasdespam.fr> a écrit dans le message de news: ehCSUw74FHA.3980@TK2MSFTNGP10.phx.gbl...
Bonsoir à vous, toutes et tous.
Je reviens -hélàs.
J'ai effectué la modif que Alain m'as conseillée, et les dates correspondent
désormais aux noms des onglets.
Cependant certains onglets ne sont parfois pas créés (pas toujours les
mêmes...)
Y aurait-il une raison pour que ma boucle saute un -ou des- pas de manière
aléatoire ?
Quelle erreur aurai-je commise ?
J'attends avec la plus grande impatience vos avis éclairés, avant d'arracher
rageusement les quelques cheveux qui me restent.
Il ne faut, par principe, jamais faire l'impasse sur le 2° argument
(soi-disant facultatif) de la fonction CELLULE
Cela a pour effet de rendre la fonction non volatile (pas de recalcul)
Donc, pour ton cas, corriger en
STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
Essaie ceci, et lis les commentaires que j'ai ajoutées dans le code :
'------------------------------- Sub CréationDesPagesJour() 'Avec l'aide de MPFE et en particulier Denis M 'Déclaration des variables Dim MaDate As Variant Dim Sh As Worksheet Dim LastDay As Byte Dim Annee As Integer Dim LeMois As Byte Dim A As Byte Dim Hl As Hyperlink 'Préférable de définir toute tes variable 'en début de procédure
'Désactivation des procédures événementielles Application.EnableEvents = False 'Test pour vérifier que les pages n'ont pas encore été créées If Sheets.Count = 3 Then 'Demande à l'usager le mois. Do MaDate = InputBox("Entrez une date du mois pour lequel il faut" & vbLf & _ "créer une feuille pour chacun des jours." & vbLf & vbLf & _ "Exemple : 1/01/2006", "Une feuille par jour") 'Si l'usager annule l'opération If MaDate = "" Then Exit Sub If Not IsDate(MaDate) Then MsgBox "La donnée saisie n'est " & _ "pas un format date reconnu par excel." End If Loop Until IsDate(MaDate) = True 'Affectation des valeurs aux variables. Annee = Year(MaDate) LeMois = Month(MaDate) LastDay = Day(DateSerial(Annee, LeMois + 1, 0))
Application.ScreenUpdating = False 'La boucle copie "Modèle" autant de fois qu'il y a de jours 'et renomme chaque feuille avec la date. For A = 1 To LastDay Step 1 Sheets("Modèle").Copy before:=Sheets("Modèle") Set Sh = ActiveSheet With Sh .Visible = True .Name = Format(DateSerial(Annee, LeMois, A), "dd.mm.yy") 'Recopie de la valeur de la formule en O3 Calculate 'Je ne saisis pas ce que tu veux copier 'et où tu veux le faire ! Range("O3").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse End With 'Boucle pour rediriger les hyperliens de "Modèle" vers la feuille créée. For Each Hl In ActiveSheet.Hyperlinks Hl.SubAddress = Replace(Hl.SubAddress, "Modèle!", "") Next Hl Next
'Masque les feuilles "Premier" "Administration" et "Modèle" Sheets(Array("Premier", "Administration", "Modèle")).Visible = False 'Réactivation des procédures événementielles Application.EnableEvents = True 'Lancement de la private sub qui liste les feuilles dans le tableau de "Total" ListerFeuilles End 'Attention cette commande remet toutes les variables à 0 'Y compris les variables déclarées "Public" End If
'Vidage des variables -> ceci s'applique seulement pour 'les variables objets "Range", Worksheet, workbook ... 'MaDate n'est pas une variable objet mais une variable 'de type variant devant recevoir éventuellement une date ... Set Sh = Nothing ' Set MaDate = Nothing Set Hl = Nothing
End Sub '-------------------------------
Salutations!
"Patrick BASTARD" a écrit dans le message de news: Bonsoir à vous, toutes et tous.
Je reviens -hélàs.
J'ai effectué la modif que Alain m'as conseillée, et les dates correspondent désormais aux noms des onglets.
Cependant certains onglets ne sont parfois pas créés (pas toujours les mêmes...)
Y aurait-il une raison pour que ma boucle saute un -ou des- pas de manière aléatoire ?
Quelle erreur aurai-je commise ?
J'attends avec la plus grande impatience vos avis éclairés, avant d'arracher rageusement les quelques cheveux qui me restent.
Il ne faut, par principe, jamais faire l'impasse sur le 2° argument (soi-disant facultatif) de la fonction CELLULE Cela a pour effet de rendre la fonction non volatile (pas de recalcul) Donc, pour ton cas, corriger en STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
AV
Patrick BASTARD
Bonjour, *michdenis*
Merci, une nouvelle fois, de me tendre une main secourable... ;-)
Je teste et je reviens.
-- Bien amicordialement, P. Bastard
Bonjour Patrick,
Essaie ceci, et lis les commentaires que j'ai ajoutées dans le code :
'------------------------------- Sub CréationDesPagesJour() 'Avec l'aide de MPFE et en particulier Denis M 'Déclaration des variables Dim MaDate As Variant Dim Sh As Worksheet Dim LastDay As Byte Dim Annee As Integer Dim LeMois As Byte Dim A As Byte Dim Hl As Hyperlink 'Préférable de définir toute tes variable 'en début de procédure
'Désactivation des procédures événementielles Application.EnableEvents = False 'Test pour vérifier que les pages n'ont pas encore été créées If Sheets.Count = 3 Then 'Demande à l'usager le mois. Do MaDate = InputBox("Entrez une date du mois pour lequel il faut" & vbLf & _ "créer une feuille pour chacun des jours." & vbLf & vbLf & _ "Exemple : 1/01/2006", "Une feuille par jour") 'Si l'usager annule l'opération If MaDate = "" Then Exit Sub If Not IsDate(MaDate) Then MsgBox "La donnée saisie n'est " & _ "pas un format date reconnu par excel." End If Loop Until IsDate(MaDate) = True 'Affectation des valeurs aux variables. Annee = Year(MaDate) LeMois = Month(MaDate) LastDay = Day(DateSerial(Annee, LeMois + 1, 0))
Application.ScreenUpdating = False 'La boucle copie "Modèle" autant de fois qu'il y a de jours 'et renomme chaque feuille avec la date. For A = 1 To LastDay Step 1 Sheets("Modèle").Copy before:=Sheets("Modèle") Set Sh = ActiveSheet With Sh .Visible = True .Name = Format(DateSerial(Annee, LeMois, A), "dd.mm.yy") 'Recopie de la valeur de la formule en O3 Calculate 'Je ne saisis pas ce que tu veux copier 'et où tu veux le faire ! Range("O3").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse End With 'Boucle pour rediriger les hyperliens de "Modèle" vers la feuille créée. For Each Hl In ActiveSheet.Hyperlinks Hl.SubAddress = Replace(Hl.SubAddress, "Modèle!", "") Next Hl Next
'Masque les feuilles "Premier" "Administration" et "Modèle" Sheets(Array("Premier", "Administration", "Modèle")).Visible > False 'Réactivation des procédures événementielles Application.EnableEvents = True 'Lancement de la private sub qui liste les feuilles dans le tableau de "Total" ListerFeuilles End 'Attention cette commande remet toutes les variables à 0 'Y compris les variables déclarées "Public" End If
'Vidage des variables -> ceci s'applique seulement pour 'les variables objets "Range", Worksheet, workbook ... 'MaDate n'est pas une variable objet mais une variable 'de type variant devant recevoir éventuellement une date ... Set Sh = Nothing ' Set MaDate = Nothing Set Hl = Nothing
End Sub '-------------------------------
Salutations!
"Patrick BASTARD" a écrit dans le message de news: Bonsoir à vous, toutes et tous.
Je reviens -hélàs.
J'ai effectué la modif que Alain m'as conseillée, et les dates correspondent désormais aux noms des onglets.
Cependant certains onglets ne sont parfois pas créés (pas toujours les mêmes...)
Y aurait-il une raison pour que ma boucle saute un -ou des- pas de manière aléatoire ?
Quelle erreur aurai-je commise ?
J'attends avec la plus grande impatience vos avis éclairés, avant d'arracher rageusement les quelques cheveux qui me restent.
Il ne faut, par principe, jamais faire l'impasse sur le 2° argument (soi-disant facultatif) de la fonction CELLULE Cela a pour effet de rendre la fonction non volatile (pas de recalcul) Donc, pour ton cas, corriger en STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
AV
Bonjour, *michdenis*
Merci, une nouvelle fois, de me tendre une main secourable...
;-)
Je teste et je reviens.
--
Bien amicordialement,
P. Bastard
Bonjour Patrick,
Essaie ceci, et lis les commentaires que j'ai ajoutées dans le code :
'-------------------------------
Sub CréationDesPagesJour()
'Avec l'aide de MPFE et en particulier Denis M
'Déclaration des variables
Dim MaDate As Variant
Dim Sh As Worksheet
Dim LastDay As Byte
Dim Annee As Integer
Dim LeMois As Byte
Dim A As Byte
Dim Hl As Hyperlink 'Préférable de définir toute tes variable
'en début de procédure
'Désactivation des procédures événementielles
Application.EnableEvents = False
'Test pour vérifier que les pages n'ont pas encore été créées
If Sheets.Count = 3 Then
'Demande à l'usager le mois.
Do
MaDate = InputBox("Entrez une date du mois pour lequel il
faut" & vbLf & _ "créer une feuille pour chacun des
jours." & vbLf & vbLf & _ "Exemple : 1/01/2006", "Une
feuille par jour") 'Si l'usager annule l'opération
If MaDate = "" Then Exit Sub
If Not IsDate(MaDate) Then
MsgBox "La donnée saisie n'est " & _
"pas un format date reconnu par excel."
End If
Loop Until IsDate(MaDate) = True
'Affectation des valeurs aux variables.
Annee = Year(MaDate)
LeMois = Month(MaDate)
LastDay = Day(DateSerial(Annee, LeMois + 1, 0))
Application.ScreenUpdating = False
'La boucle copie "Modèle" autant de fois qu'il y a de jours
'et renomme chaque feuille avec la date.
For A = 1 To LastDay Step 1
Sheets("Modèle").Copy before:=Sheets("Modèle")
Set Sh = ActiveSheet
With Sh
.Visible = True
.Name = Format(DateSerial(Annee, LeMois, A), "dd.mm.yy")
'Recopie de la valeur de la formule en O3
Calculate
'Je ne saisis pas ce que tu veux copier
'et où tu veux le faire !
Range("O3").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
End With
'Boucle pour rediriger les hyperliens de "Modèle" vers la feuille
créée. For Each Hl In ActiveSheet.Hyperlinks
Hl.SubAddress = Replace(Hl.SubAddress, "Modèle!", "")
Next Hl
Next
'Masque les feuilles "Premier" "Administration" et "Modèle"
Sheets(Array("Premier", "Administration", "Modèle")).Visible > False 'Réactivation des procédures événementielles
Application.EnableEvents = True
'Lancement de la private sub qui liste les feuilles dans le tableau
de "Total" ListerFeuilles
End 'Attention cette commande remet toutes les variables à 0
'Y compris les variables déclarées "Public"
End If
'Vidage des variables -> ceci s'applique seulement pour
'les variables objets "Range", Worksheet, workbook ...
'MaDate n'est pas une variable objet mais une variable
'de type variant devant recevoir éventuellement une date ...
Set Sh = Nothing
' Set MaDate = Nothing
Set Hl = Nothing
End Sub
'-------------------------------
Salutations!
"Patrick BASTARD" <pasdespambastardp@freepasdespam.fr> a écrit dans
le message de news: ehCSUw74FHA.3980@TK2MSFTNGP10.phx.gbl... Bonsoir
à vous, toutes et tous.
Je reviens -hélàs.
J'ai effectué la modif que Alain m'as conseillée, et les dates
correspondent
désormais aux noms des onglets.
Cependant certains onglets ne sont parfois pas créés (pas toujours les
mêmes...)
Y aurait-il une raison pour que ma boucle saute un -ou des- pas de
manière
aléatoire ?
Quelle erreur aurai-je commise ?
J'attends avec la plus grande impatience vos avis éclairés, avant
d'arracher
rageusement les quelques cheveux qui me restent.
Il ne faut, par principe, jamais faire l'impasse sur le 2° argument
(soi-disant facultatif) de la fonction CELLULE
Cela a pour effet de rendre la fonction non volatile (pas de
recalcul) Donc, pour ton cas, corriger en
STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
Merci, une nouvelle fois, de me tendre une main secourable... ;-)
Je teste et je reviens.
-- Bien amicordialement, P. Bastard
Bonjour Patrick,
Essaie ceci, et lis les commentaires que j'ai ajoutées dans le code :
'------------------------------- Sub CréationDesPagesJour() 'Avec l'aide de MPFE et en particulier Denis M 'Déclaration des variables Dim MaDate As Variant Dim Sh As Worksheet Dim LastDay As Byte Dim Annee As Integer Dim LeMois As Byte Dim A As Byte Dim Hl As Hyperlink 'Préférable de définir toute tes variable 'en début de procédure
'Désactivation des procédures événementielles Application.EnableEvents = False 'Test pour vérifier que les pages n'ont pas encore été créées If Sheets.Count = 3 Then 'Demande à l'usager le mois. Do MaDate = InputBox("Entrez une date du mois pour lequel il faut" & vbLf & _ "créer une feuille pour chacun des jours." & vbLf & vbLf & _ "Exemple : 1/01/2006", "Une feuille par jour") 'Si l'usager annule l'opération If MaDate = "" Then Exit Sub If Not IsDate(MaDate) Then MsgBox "La donnée saisie n'est " & _ "pas un format date reconnu par excel." End If Loop Until IsDate(MaDate) = True 'Affectation des valeurs aux variables. Annee = Year(MaDate) LeMois = Month(MaDate) LastDay = Day(DateSerial(Annee, LeMois + 1, 0))
Application.ScreenUpdating = False 'La boucle copie "Modèle" autant de fois qu'il y a de jours 'et renomme chaque feuille avec la date. For A = 1 To LastDay Step 1 Sheets("Modèle").Copy before:=Sheets("Modèle") Set Sh = ActiveSheet With Sh .Visible = True .Name = Format(DateSerial(Annee, LeMois, A), "dd.mm.yy") 'Recopie de la valeur de la formule en O3 Calculate 'Je ne saisis pas ce que tu veux copier 'et où tu veux le faire ! Range("O3").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse End With 'Boucle pour rediriger les hyperliens de "Modèle" vers la feuille créée. For Each Hl In ActiveSheet.Hyperlinks Hl.SubAddress = Replace(Hl.SubAddress, "Modèle!", "") Next Hl Next
'Masque les feuilles "Premier" "Administration" et "Modèle" Sheets(Array("Premier", "Administration", "Modèle")).Visible > False 'Réactivation des procédures événementielles Application.EnableEvents = True 'Lancement de la private sub qui liste les feuilles dans le tableau de "Total" ListerFeuilles End 'Attention cette commande remet toutes les variables à 0 'Y compris les variables déclarées "Public" End If
'Vidage des variables -> ceci s'applique seulement pour 'les variables objets "Range", Worksheet, workbook ... 'MaDate n'est pas une variable objet mais une variable 'de type variant devant recevoir éventuellement une date ... Set Sh = Nothing ' Set MaDate = Nothing Set Hl = Nothing
End Sub '-------------------------------
Salutations!
"Patrick BASTARD" a écrit dans le message de news: Bonsoir à vous, toutes et tous.
Je reviens -hélàs.
J'ai effectué la modif que Alain m'as conseillée, et les dates correspondent désormais aux noms des onglets.
Cependant certains onglets ne sont parfois pas créés (pas toujours les mêmes...)
Y aurait-il une raison pour que ma boucle saute un -ou des- pas de manière aléatoire ?
Quelle erreur aurai-je commise ?
J'attends avec la plus grande impatience vos avis éclairés, avant d'arracher rageusement les quelques cheveux qui me restent.
Il ne faut, par principe, jamais faire l'impasse sur le 2° argument (soi-disant facultatif) de la fonction CELLULE Cela a pour effet de rendre la fonction non volatile (pas de recalcul) Donc, pour ton cas, corriger en STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
AV
Patrick BASTARD
Bonjour, *Denis*
Mes cheveux, sauvés in extremis, te remercient. ;-)
Après modification selon tes conseils, et plusieurs tests, cette anomalie ne s'est pas reproduite. Oufff...
Je te remercie également d'avoir épuré cette proc, et d'y avoir ajouté tes commentaires.
Pour info, le If Sheets.Count = 5 est bien 5, car 2 feuilles se situent à l'origine avant Modèle (Anomalies, Administration, Premier, Modèle et Total, qui récapitule tout ce qu'il y a depuis Premier jusqu'à Modèle).
Donc, Merci, Merci, et Merci.
PS : seras-tu des nôtres, le 17/12 ?
-- Bien amicordialement, P. Bastard
Bonjour Patrick,
Essaie ceci, et lis les commentaires que j'ai ajoutées dans le code :
'------------------------------- Sub CréationDesPagesJour() 'Avec l'aide de MPFE et en particulier Denis M 'Déclaration des variables Dim MaDate As Variant Dim Sh As Worksheet Dim LastDay As Byte Dim Annee As Integer Dim LeMois As Byte Dim A As Byte Dim Hl As Hyperlink 'Préférable de définir toute tes variable 'en début de procédure
'Désactivation des procédures événementielles Application.EnableEvents = False 'Test pour vérifier que les pages n'ont pas encore été créées If Sheets.Count = 3 Then 'Demande à l'usager le mois. Do MaDate = InputBox("Entrez une date du mois pour lequel il faut" & vbLf & _ "créer une feuille pour chacun des jours." & vbLf & vbLf & _ "Exemple : 1/01/2006", "Une feuille par jour") 'Si l'usager annule l'opération If MaDate = "" Then Exit Sub If Not IsDate(MaDate) Then MsgBox "La donnée saisie n'est " & _ "pas un format date reconnu par excel." End If Loop Until IsDate(MaDate) = True 'Affectation des valeurs aux variables. Annee = Year(MaDate) LeMois = Month(MaDate) LastDay = Day(DateSerial(Annee, LeMois + 1, 0))
Application.ScreenUpdating = False 'La boucle copie "Modèle" autant de fois qu'il y a de jours 'et renomme chaque feuille avec la date. For A = 1 To LastDay Step 1 Sheets("Modèle").Copy before:=Sheets("Modèle") Set Sh = ActiveSheet With Sh .Visible = True .Name = Format(DateSerial(Annee, LeMois, A), "dd.mm.yy") 'Recopie de la valeur de la formule en O3 Calculate 'Je ne saisis pas ce que tu veux copier 'et où tu veux le faire ! Range("O3").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse End With 'Boucle pour rediriger les hyperliens de "Modèle" vers la feuille créée. For Each Hl In ActiveSheet.Hyperlinks Hl.SubAddress = Replace(Hl.SubAddress, "Modèle!", "") Next Hl Next
'Masque les feuilles "Premier" "Administration" et "Modèle" Sheets(Array("Premier", "Administration", "Modèle")).Visible > False 'Réactivation des procédures événementielles Application.EnableEvents = True 'Lancement de la private sub qui liste les feuilles dans le tableau de "Total" ListerFeuilles End 'Attention cette commande remet toutes les variables à 0 'Y compris les variables déclarées "Public" End If
'Vidage des variables -> ceci s'applique seulement pour 'les variables objets "Range", Worksheet, workbook ... 'MaDate n'est pas une variable objet mais une variable 'de type variant devant recevoir éventuellement une date ... Set Sh = Nothing ' Set MaDate = Nothing Set Hl = Nothing
End Sub '-------------------------------
Salutations!
"Patrick BASTARD" a écrit dans le message de news: Bonsoir à vous, toutes et tous.
Je reviens -hélàs.
J'ai effectué la modif que Alain m'as conseillée, et les dates correspondent désormais aux noms des onglets.
Cependant certains onglets ne sont parfois pas créés (pas toujours les mêmes...)
Y aurait-il une raison pour que ma boucle saute un -ou des- pas de manière aléatoire ?
Quelle erreur aurai-je commise ?
J'attends avec la plus grande impatience vos avis éclairés, avant d'arracher rageusement les quelques cheveux qui me restent.
Il ne faut, par principe, jamais faire l'impasse sur le 2° argument (soi-disant facultatif) de la fonction CELLULE Cela a pour effet de rendre la fonction non volatile (pas de recalcul) Donc, pour ton cas, corriger en STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
AV
Bonjour, *Denis*
Mes cheveux, sauvés in extremis, te remercient.
;-)
Après modification selon tes conseils, et plusieurs tests, cette anomalie ne
s'est pas reproduite.
Oufff...
Je te remercie également d'avoir épuré cette proc, et d'y avoir ajouté tes
commentaires.
Pour info, le If Sheets.Count = 5 est bien 5, car 2 feuilles se situent à
l'origine avant Modèle (Anomalies, Administration, Premier, Modèle et Total,
qui récapitule tout ce qu'il y a depuis Premier jusqu'à Modèle).
Donc, Merci, Merci, et Merci.
PS : seras-tu des nôtres, le 17/12 ?
--
Bien amicordialement,
P. Bastard
Bonjour Patrick,
Essaie ceci, et lis les commentaires que j'ai ajoutées dans le code :
'-------------------------------
Sub CréationDesPagesJour()
'Avec l'aide de MPFE et en particulier Denis M
'Déclaration des variables
Dim MaDate As Variant
Dim Sh As Worksheet
Dim LastDay As Byte
Dim Annee As Integer
Dim LeMois As Byte
Dim A As Byte
Dim Hl As Hyperlink 'Préférable de définir toute tes variable
'en début de procédure
'Désactivation des procédures événementielles
Application.EnableEvents = False
'Test pour vérifier que les pages n'ont pas encore été créées
If Sheets.Count = 3 Then
'Demande à l'usager le mois.
Do
MaDate = InputBox("Entrez une date du mois pour lequel il
faut" & vbLf & _ "créer une feuille pour chacun des
jours." & vbLf & vbLf & _ "Exemple : 1/01/2006", "Une
feuille par jour") 'Si l'usager annule l'opération
If MaDate = "" Then Exit Sub
If Not IsDate(MaDate) Then
MsgBox "La donnée saisie n'est " & _
"pas un format date reconnu par excel."
End If
Loop Until IsDate(MaDate) = True
'Affectation des valeurs aux variables.
Annee = Year(MaDate)
LeMois = Month(MaDate)
LastDay = Day(DateSerial(Annee, LeMois + 1, 0))
Application.ScreenUpdating = False
'La boucle copie "Modèle" autant de fois qu'il y a de jours
'et renomme chaque feuille avec la date.
For A = 1 To LastDay Step 1
Sheets("Modèle").Copy before:=Sheets("Modèle")
Set Sh = ActiveSheet
With Sh
.Visible = True
.Name = Format(DateSerial(Annee, LeMois, A), "dd.mm.yy")
'Recopie de la valeur de la formule en O3
Calculate
'Je ne saisis pas ce que tu veux copier
'et où tu veux le faire !
Range("O3").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
End With
'Boucle pour rediriger les hyperliens de "Modèle" vers la feuille
créée. For Each Hl In ActiveSheet.Hyperlinks
Hl.SubAddress = Replace(Hl.SubAddress, "Modèle!", "")
Next Hl
Next
'Masque les feuilles "Premier" "Administration" et "Modèle"
Sheets(Array("Premier", "Administration", "Modèle")).Visible > False 'Réactivation des procédures événementielles
Application.EnableEvents = True
'Lancement de la private sub qui liste les feuilles dans le tableau
de "Total" ListerFeuilles
End 'Attention cette commande remet toutes les variables à 0
'Y compris les variables déclarées "Public"
End If
'Vidage des variables -> ceci s'applique seulement pour
'les variables objets "Range", Worksheet, workbook ...
'MaDate n'est pas une variable objet mais une variable
'de type variant devant recevoir éventuellement une date ...
Set Sh = Nothing
' Set MaDate = Nothing
Set Hl = Nothing
End Sub
'-------------------------------
Salutations!
"Patrick BASTARD" <pasdespambastardp@freepasdespam.fr> a écrit dans
le message de news: ehCSUw74FHA.3980@TK2MSFTNGP10.phx.gbl... Bonsoir
à vous, toutes et tous.
Je reviens -hélàs.
J'ai effectué la modif que Alain m'as conseillée, et les dates
correspondent
désormais aux noms des onglets.
Cependant certains onglets ne sont parfois pas créés (pas toujours les
mêmes...)
Y aurait-il une raison pour que ma boucle saute un -ou des- pas de
manière
aléatoire ?
Quelle erreur aurai-je commise ?
J'attends avec la plus grande impatience vos avis éclairés, avant
d'arracher
rageusement les quelques cheveux qui me restent.
Il ne faut, par principe, jamais faire l'impasse sur le 2° argument
(soi-disant facultatif) de la fonction CELLULE
Cela a pour effet de rendre la fonction non volatile (pas de
recalcul) Donc, pour ton cas, corriger en
STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
Mes cheveux, sauvés in extremis, te remercient. ;-)
Après modification selon tes conseils, et plusieurs tests, cette anomalie ne s'est pas reproduite. Oufff...
Je te remercie également d'avoir épuré cette proc, et d'y avoir ajouté tes commentaires.
Pour info, le If Sheets.Count = 5 est bien 5, car 2 feuilles se situent à l'origine avant Modèle (Anomalies, Administration, Premier, Modèle et Total, qui récapitule tout ce qu'il y a depuis Premier jusqu'à Modèle).
Donc, Merci, Merci, et Merci.
PS : seras-tu des nôtres, le 17/12 ?
-- Bien amicordialement, P. Bastard
Bonjour Patrick,
Essaie ceci, et lis les commentaires que j'ai ajoutées dans le code :
'------------------------------- Sub CréationDesPagesJour() 'Avec l'aide de MPFE et en particulier Denis M 'Déclaration des variables Dim MaDate As Variant Dim Sh As Worksheet Dim LastDay As Byte Dim Annee As Integer Dim LeMois As Byte Dim A As Byte Dim Hl As Hyperlink 'Préférable de définir toute tes variable 'en début de procédure
'Désactivation des procédures événementielles Application.EnableEvents = False 'Test pour vérifier que les pages n'ont pas encore été créées If Sheets.Count = 3 Then 'Demande à l'usager le mois. Do MaDate = InputBox("Entrez une date du mois pour lequel il faut" & vbLf & _ "créer une feuille pour chacun des jours." & vbLf & vbLf & _ "Exemple : 1/01/2006", "Une feuille par jour") 'Si l'usager annule l'opération If MaDate = "" Then Exit Sub If Not IsDate(MaDate) Then MsgBox "La donnée saisie n'est " & _ "pas un format date reconnu par excel." End If Loop Until IsDate(MaDate) = True 'Affectation des valeurs aux variables. Annee = Year(MaDate) LeMois = Month(MaDate) LastDay = Day(DateSerial(Annee, LeMois + 1, 0))
Application.ScreenUpdating = False 'La boucle copie "Modèle" autant de fois qu'il y a de jours 'et renomme chaque feuille avec la date. For A = 1 To LastDay Step 1 Sheets("Modèle").Copy before:=Sheets("Modèle") Set Sh = ActiveSheet With Sh .Visible = True .Name = Format(DateSerial(Annee, LeMois, A), "dd.mm.yy") 'Recopie de la valeur de la formule en O3 Calculate 'Je ne saisis pas ce que tu veux copier 'et où tu veux le faire ! Range("O3").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse End With 'Boucle pour rediriger les hyperliens de "Modèle" vers la feuille créée. For Each Hl In ActiveSheet.Hyperlinks Hl.SubAddress = Replace(Hl.SubAddress, "Modèle!", "") Next Hl Next
'Masque les feuilles "Premier" "Administration" et "Modèle" Sheets(Array("Premier", "Administration", "Modèle")).Visible > False 'Réactivation des procédures événementielles Application.EnableEvents = True 'Lancement de la private sub qui liste les feuilles dans le tableau de "Total" ListerFeuilles End 'Attention cette commande remet toutes les variables à 0 'Y compris les variables déclarées "Public" End If
'Vidage des variables -> ceci s'applique seulement pour 'les variables objets "Range", Worksheet, workbook ... 'MaDate n'est pas une variable objet mais une variable 'de type variant devant recevoir éventuellement une date ... Set Sh = Nothing ' Set MaDate = Nothing Set Hl = Nothing
End Sub '-------------------------------
Salutations!
"Patrick BASTARD" a écrit dans le message de news: Bonsoir à vous, toutes et tous.
Je reviens -hélàs.
J'ai effectué la modif que Alain m'as conseillée, et les dates correspondent désormais aux noms des onglets.
Cependant certains onglets ne sont parfois pas créés (pas toujours les mêmes...)
Y aurait-il une raison pour que ma boucle saute un -ou des- pas de manière aléatoire ?
Quelle erreur aurai-je commise ?
J'attends avec la plus grande impatience vos avis éclairés, avant d'arracher rageusement les quelques cheveux qui me restent.
Il ne faut, par principe, jamais faire l'impasse sur le 2° argument (soi-disant facultatif) de la fonction CELLULE Cela a pour effet de rendre la fonction non volatile (pas de recalcul) Donc, pour ton cas, corriger en STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
AV
michdenis
| seras-tu des nôtres, le 17/12 ?
Ce n'est pas la mer à boire mais à traverser qui cause problème !!!
;-))
Salutations!
| seras-tu des nôtres, le 17/12 ?
Ce n'est pas la mer à boire mais à traverser qui cause problème !!!