Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Flo Cabon, Excelabo 2005 - Validation de facture

5 réponses
Avatar
NewsMic
Bonsoir,

J'ai adapté la très bonne macro validation de facture citée en objet pour
Excel 2002.
Je passe progressivement à MS Office 2007 Professionnel en "migrant' les
versions : parmi les nouvelles options, je sauvegarde les classeurs .xls en
xlsm (classeur Excel prenant en charge les macros).
Par un rechercher/remplacer des extensions ".xls" par ".xlsm", j'ai modifié
tout le contenu de la macro.
J'ai maintenant 2 erreurs :
- Le fichier de destination ne s'ouvre plus avec la macro et un nouveau
fichier est créé sur la base du "modèlemensuel".
- "l'espion" sur "err" indique la valeur 9. "Error= l'indice n'appartient
pas à la sélection"

J'ai mis en commentaires la partie "création si le fichier n'existe pas".
Et si le fichier de destination est ouvert AVANT l'exécution de la macro,
tout se déroule parfaitement.

Je vous donne ci-dessous les variables de la macro ainsi que le partie
"création".
Si quelqu'un a une idée du problème. Pour info, je ne suis pas très calé en
Vba. Merci.
NewsMic
***************
Dim ClassDest As String
Dim Msg As String
Dim Valid
Dim NumFact
Dim Onglet As String
ThisWorkbook.Activate

'existe-t-il dans le répertoire un classeur factures-févr05.xlsm si on est
en février ?
'détermination du nom de ce classeur en fonction de mois-Année en cours
ClassDest = "Factures-" & Format(Now(), "mmmyy") & ".xlsm"
' activer le fichier
On Error Resume Next
Workbooks(ClassDest).Activate
'si le classeur n'est pas déjà ouvert, l'ouvrir
If Err <> 0 Then
On Error Resume Next
Workbooks.Open (ThisWorkbook.Path & "\" & ClassDest)
'si le classeur n'existe pas, le créer en utilisant le modèle
"modèlemensuel"
If Err <> 0 Then
Workbooks.Add(ThisWorkbook.Path & "\modèlemensuel").SaveAs
(ThisWorkbook.Path & "\" & ClassDest)
End If
End If

5 réponses

Avatar
Misange
Bonsoir,
il faut aussi que tu modifies le classeur modèle ! commence par l'ouvrir
et réenregistre le comme un modèle XL2007.
Misange

Bonsoir,

J'ai adapté la très bonne macro validation de facture citée en objet pour
Excel 2002.
Je passe progressivement à MS Office 2007 Professionnel en "migrant' les
versions : parmi les nouvelles options, je sauvegarde les classeurs .xls en
xlsm (classeur Excel prenant en charge les macros).
Par un rechercher/remplacer des extensions ".xls" par ".xlsm", j'ai modifié
tout le contenu de la macro.
J'ai maintenant 2 erreurs :
- Le fichier de destination ne s'ouvre plus avec la macro et un nouveau
fichier est créé sur la base du "modèlemensuel".
- "l'espion" sur "err" indique la valeur 9. "Error= l'indice n'appartient
pas à la sélection"

J'ai mis en commentaires la partie "création si le fichier n'existe pas".
Et si le fichier de destination est ouvert AVANT l'exécution de la macro,
tout se déroule parfaitement.

Je vous donne ci-dessous les variables de la macro ainsi que le partie
"création".
Si quelqu'un a une idée du problème. Pour info, je ne suis pas très calé en
Vba. Merci.
NewsMic
***************
Dim ClassDest As String
Dim Msg As String
Dim Valid
Dim NumFact
Dim Onglet As String
ThisWorkbook.Activate

'existe-t-il dans le répertoire un classeur factures-févr05.xlsm si on est
en février ?
'détermination du nom de ce classeur en fonction de mois-Année en cours
ClassDest = "Factures-" & Format(Now(), "mmmyy") & ".xlsm"
' activer le fichier
On Error Resume Next
Workbooks(ClassDest).Activate
'si le classeur n'est pas déjà ouvert, l'ouvrir
If Err <> 0 Then
On Error Resume Next
Workbooks.Open (ThisWorkbook.Path & "" & ClassDest)
'si le classeur n'existe pas, le créer en utilisant le modèle
"modèlemensuel"
If Err <> 0 Then
Workbooks.Add(ThisWorkbook.Path & "modèlemensuel").SaveAs
(ThisWorkbook.Path & "" & ClassDest)
End If
End If




Avatar
NewsMic
Re bonsoir,

Le lien d'origine (astuce n°1580)
http://www.excelabo.net/moteurs/compteclic.php?nomü-factures
J'ai suivi ton conseil et enregistré le modèle en "modèle prenant en charge
les macros". Il s'appelle maintenant "modèlemensuel.xltm"
Mais l"exécution de la macro crée un fichier "modèlemensuel1" qui n'est pas
renommé comme prévu dans la macro. Du coup, la feuille vient s'enregistrer
dans le fichier de saisie de factures (fc-facture).
NewsMic

"Misange" a écrit dans le message de news:

Bonsoir,
il faut aussi que tu modifies le classeur modèle ! commence par l'ouvrir
et réenregistre le comme un modèle XL2007.
Misange

Bonsoir,

J'ai adapté la très bonne macro validation de facture citée en objet pour
Excel 2002.
Je passe progressivement à MS Office 2007 Professionnel en "migrant' les
versions : parmi les nouvelles options, je sauvegarde les classeurs .xls
en xlsm (classeur Excel prenant en charge les macros).
Par un rechercher/remplacer des extensions ".xls" par ".xlsm", j'ai
modifié tout le contenu de la macro.
J'ai maintenant 2 erreurs :
- Le fichier de destination ne s'ouvre plus avec la macro et un nouveau
fichier est créé sur la base du "modèlemensuel".
- "l'espion" sur "err" indique la valeur 9. "Error= l'indice n'appartient
pas à la sélection"

J'ai mis en commentaires la partie "création si le fichier n'existe pas".
Et si le fichier de destination est ouvert AVANT l'exécution de la macro,
tout se déroule parfaitement.

Je vous donne ci-dessous les variables de la macro ainsi que le partie
"création".
Si quelqu'un a une idée du problème. Pour info, je ne suis pas très calé
en Vba. Merci.
NewsMic
***************
Dim ClassDest As String
Dim Msg As String
Dim Valid
Dim NumFact
Dim Onglet As String
ThisWorkbook.Activate

'existe-t-il dans le répertoire un classeur factures-févr05.xlsm si on
est en février ?
'détermination du nom de ce classeur en fonction de mois-Année en
cours
ClassDest = "Factures-" & Format(Now(), "mmmyy") & ".xlsm"
' activer le fichier
On Error Resume Next
Workbooks(ClassDest).Activate
'si le classeur n'est pas déjà ouvert, l'ouvrir
If Err <> 0 Then
On Error Resume Next
Workbooks.Open (ThisWorkbook.Path & "" & ClassDest)
'si le classeur n'existe pas, le créer en utilisant le modèle
"modèlemensuel"
If Err <> 0 Then
Workbooks.Add(ThisWorkbook.Path & "modèlemensuel").SaveAs
(ThisWorkbook.Path & "" & ClassDest)
End If
End If





Avatar
Misange
Re bonsoir,

Le lien d'origine (astuce n°1580)
http://www.excelabo.net/moteurs/compteclic.php?nomü-factures
J'ai suivi ton conseil et enregistré le modèle en "modèle prenant en charge
les macros". Il s'appelle maintenant "modèlemensuel.xltm"
Mais l"exécution de la macro crée un fichier "modèlemensuel1" qui n'est pas
renommé comme prévu dans la macro. Du coup, la feuille vient s'enregistrer
dans le fichier de saisie de factures (fc-facture).
NewsMic


Je viens de regarder rapidement, sans pouvoir tester n'ayant pas accès à
office 2007 en ce moment. Je t'ai répondu une annerie hier, abusée par
le nom modèlemensuel : ce classeur n'est pas un modèle au sens d'excel
(ce nom est très mal choisi...) il ne faut donc pas le nommer xltm mais
xlsx (il n'y a aucune macro dedans !)

si cela ne suffit pas, modifie aussi cette ligne :
Workbooks.Add(ThisWorkbook.Path & "modèlemensuel").SaveAs
(ThisWorkbook.Path & "" & ClassDest)
en précisant l'extension de modèlemensuel.

Dès que je pourrai tester je le ferai...
Dis moi si ça fonctionne.
Misange

Avatar
NewsMic
Ok. Pour le classeur, je l'ai recréé xltm car j'y ai créé une macro de mise
en forme personnalisée avant impression.
Le classeur de destination existant déjà, il s'ouvre normalement bien que
l'espion "err" donne le n°9 et que toujours dans la fenêtre de cet espion,
le message est "l'indice n'appartient pas à la sélection".
La ligne que tu indiques (Workbooks.Add(ThisWorkbook.....) existe déjà
exactement comme tu l'écris.
La valeur "error" ne restant pas à 0 après ouverture du fichier, la création
de "modèlemensuel1" s'exécute. J'ai donc mis en commentaires les lignes de
création.
NewsMic


"Misange" a écrit dans le message de news:

Re bonsoir,

Le lien d'origine (astuce n°1580)
http://www.excelabo.net/moteurs/compteclic.php?nomü-factures
J'ai suivi ton conseil et enregistré le modèle en "modèle prenant en
charge les macros". Il s'appelle maintenant "modèlemensuel.xltm"
Mais l"exécution de la macro crée un fichier "modèlemensuel1" qui n'est
pas renommé comme prévu dans la macro. Du coup, la feuille vient
s'enregistrer dans le fichier de saisie de factures (fc-facture).
NewsMic


Je viens de regarder rapidement, sans pouvoir tester n'ayant pas accès à
office 2007 en ce moment. Je t'ai répondu une annerie hier, abusée par le
nom modèlemensuel : ce classeur n'est pas un modèle au sens d'excel (ce
nom est très mal choisi...) il ne faut donc pas le nommer xltm mais xlsx
(il n'y a aucune macro dedans !)

si cela ne suffit pas, modifie aussi cette ligne :
Workbooks.Add(ThisWorkbook.Path & "modèlemensuel").SaveAs
(ThisWorkbook.Path & "" & ClassDest)
en précisant l'extension de modèlemensuel.

Dès que je pourrai tester je le ferai...
Dis moi si ça fonctionne.
Misange




Avatar
Misange
Ok. Pour le classeur, je l'ai recréé xltm car j'y ai créé une macro de mise
en forme personnalisée avant impression.
OK mais ce n'est pas un modèle donc il faut lui mettre une extension

xlsm et pas xltm

Le classeur de destination existant déjà, il s'ouvre normalement bien que
l'espion "err" donne le n°9 et que toujours dans la fenêtre de cet espion,
le message est "l'indice n'appartient pas à la sélection".
La ligne que tu indiques (Workbooks.Add(ThisWorkbook.....) existe déjà
exactement comme tu l'écris.


Ma suggestion était de rajouter l'extension derrière modèle mensuel...
Workbooks.Add(ThisWorkbook.Path & "modèlemensuel****.XLSX*****").SaveAs
(ThisWorkbook.Path & "" & ClassDest)

Misange