OVH Cloud OVH Cloud

Petit problème savant à résoudre

13 réponses
Avatar
DC
Bonjour à tous,

Voilà, je dispose d'une belle macro, qui fonctionne très bien, mais à
l'usage, je me suis rendu compte d'un petit inconvénient,

le rôle de cette macro, est de prendre quelques références dans un classeur
"Facturation" pour les transférer dans un classeur "Récap"

le défaut, c'est quand je sauvegarde le classeur"Facturation" avec
enregistré sous :"Nom du Client"

Et bien la macro ne fonctionne plus, j'imagine qu'il faudrait remplacer les
mots "Facturation" dans le code de procédure, par quelque
chose.............de savant...!!..... que je ne connais pas...!!

Cordialement...............Merci d'avance...!!............DC


Public mois
Sub Récapit()

Dim Z As Integer, Question As String
'Dim mois
'Workbooks.Open Filename:= _
'"C:\Documents and Settings\Daniel\Mes documents\Daniel tous
ensembles\Daniel Tableur\Récap.xls"

'ChDir "C:\Documents and Settings\Daniel\Mes documents\Daniel tous
ensembles\Daniel Tableur\Récap.xls"
'Workbooks.Open ("Recap.xls")

'Application.Run "Facture.xls!Récapit"

Workbooks("Récap.xls").Activate
Range("A65536").End(xlUp).Offset(1, 0).Activate
For i = 1 To Workbooks("Récap.xls").Sheets.Count
X = X & i & "...." & Workbooks("Récap.xls").Sheets(i).Name & Chr(10)
Next
mois = Val(InputBox("Feuilles disponibles" & Chr(10) & Chr(10) & X & Chr(10)
& "Entrez le numéro de la feuille de destination", "Sélection", mois))
If mois < 1 Or mois > i - 1 Then Exit Sub
derlg = Workbooks("Récap.xls").Sheets(mois).Range("A65536").End(3).Row + 1
Workbooks("Récap.xls").Sheets(mois).Range("a" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Numéro].Value

Workbooks("Récap.xls").Sheets(mois).Range("c" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Sit.].Value

Workbooks("Récap.xls").Sheets(mois).Range("d" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Nom].Value

Workbooks("Récap.xls").Sheets(mois).Range("b" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Date].Value

Workbooks("Récap.xls").Sheets(mois).Range("E" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[ht].Value

Workbooks("Récap.xls").Sheets(mois).Range("h" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[ttc].Value
'*************
Application.ScreenUpdating = False
Windows("Récap.xls").Activate
Sheets(mois).Activate
y = Int((Range("H" & derlg) / Range("E" & derlg) - 1) * 100)
If y = 19 Then
Range("F" & derlg) = Range("H" & derlg) - Range("E" & derlg)
Range("G" & derlg) = ""
ElseIf y = 5 Then
Range("G" & derlg) = Range("H" & derlg) - Range("E" & derlg)
Range("F" & derlg) = ""
Else
Range("G" & derlg) = ""
Range("F" & derlg) = ""
MsgBox "TVA de " & y & "% inconnue"
End If
ActiveCell.Offset(1, 0).Range("A1").Select
Application.ScreenUpdating = True
Windows("Récap.xls").Activate

'MsgBox "Traitement terminé", vbInformation
'ActiveWorkbook.Save
'ActiveWorkbook.Close

'Question = "Traitement terminé ?"
'If MsgBox(Question, vbYesNo + vbQuestion) = vbNo Then
'Exit Sub
'End If

'ActiveWorkbook.Save
'ActiveWorkbook.Close


End Sub

3 réponses

1 2
Avatar
DC
Bonsoir à tous.............................Bonsoir michdenis,

Merci...!!

Pour faire une facture au client,

Au début, j'ai 2 classeurs d'ouvert, "Code-9" + "Facturation"

"Code-9" est un classeur de base de données + les modules de macros,

"Facturation" est un classeur, disons pour modéle de factures, et je
travaille la facture sur ce classeur, en prenant des libellés et des
formules sur le classeur "Code-9" au moyen de Copier/Coller éxécuté avec des
macros,

Quand la facture est terminée, j'ouvre un troisième classeur "Récap" ou par
la fameuse macro, je vais inscrire quelques paramètres
(date+nom+numèro+etc...) de la dite facture qui s'appelle toujours
"Facturation",

Ensuite je retourne sur le classeur "facturation" pour donner le nom du
client à ce classeur et je le sauvegarde sous le "nom du client"

Exécuté de cette façon, tout se passe très bien, mais au jourd'hui, l'on me
demande de pouvoir sauvegarder et changer le "nomdu client", avant d'aller
inscrire les paramètres sur le classeur récap, d'ou la disparation du nom
"Facturation" et l'origine du défaut,

Voilà, je pense avoir été clair.....enfin j'espère...!!

Voici la section de code qui pose problème
'-------------------------------------
Workbooks("Récap.xls").Sheets(mois).Range("a" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Numéro].Value

Workbooks("Récap.xls").Sheets(mois).Range("c" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Sit.].Value

Workbooks("Récap.xls").Sheets(mois).Range("d" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Nom].Value

Workbooks("Récap.xls").Sheets(mois).Range("b" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Date].Value

Workbooks("Récap.xls").Sheets(mois).Range("E" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[ht].Value

Workbooks("Récap.xls").Sheets(mois).Range("h" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[ttc].Value
'-----------------------------------------------------


Salutations!........bonne soirée.......encore Merci...!!.......DC

"michdenis" a écrit dans le message de news:
%
Bonjour DC,

Une solution, c'est d'expliquer clairement ce que tu tentes de faire !

Tu as 3 classeurs ouverts à moment où tu exécutes ces opérations ? Dans
quel classeur est écrite la macro ? Quel est le rôle des 2
autres ? Quel est le but final de l'opération (seulement la section où il
y a problème !) ?

Si tu peux identifier la ligne de code qui est problématique, copie là
dans ton message.


Salutations!



"DC" a écrit dans le message de news:
437307a0$0$19706$
Bonjour à tous............................Bonjour michdenis,

Merci à toi...!!...
(si j'ai bonne mémoire, cette macro me vient de toi michdenis)....

Que veux-tu dire, par il faudrait que je fasses une vérification plus
serré,

J'ai, je pense bien compris, que c'est le changement de nom, qui pose
problème,

Mais, je m'imaginais quand changeant la tournure du morceau de code
concerné
dans la procédure, que l'on pourrait remédier à ce probléme posé,

Et tu sais, moi je suis incapable d'y parvenir sans aide, je fais parti
des
non initiés, qui avancent à petits pas,

Salutations!.....bonne journée........encore Merci...!!........DC

"michdenis" a écrit dans le message de news:
%
Bonjour DC,

| change pas le nom du classeur "Facturation" par le "nom du client",

Bien c'est justement cela, après avoir changer son nom, ton code,
continue
d'utilise en dur le nom de "Facturation" comme nom du
classeur et ce dernier n'existe plus puisqu'il a changé de nom !

Il faudrait probablement que tu fasses une vérification plus serré !


Salutations!



"DC" a écrit dans le message de news:
43722f5a$0$18324$
Bonsoir à tous.....Bonsoir anonymousA...et...michdenis...et...Oliv',

Merci...!!........à tous,

Je ne pense pas qu'il puisse y avoir une erreur, puisque tant que je ne
change pas le nom du classeur "Facturation" par le "nom du client", la
procédure fonctionne trés bien, (michdenis)

par contre, j'ai appliqué ta nouvelle écriture (anonymousA) et c'est
toujours refusée,

Une question Messieurs, ne peut-on pas avoir autre chose que le nom du
classeur comme référence...(nom de feuil3....réf. de code feuille...ou
autre....) qui eux ne changeraient pas, ou bien un principe relatif qui
accepterait n'importe quel nom,

A savoir, qu'au moment du lancement de la macro, il y à toujours 3
classeurs
d'ouvert soit : "Code-9" + "Facturation transformé en Nom du client" +
"Récap" et la macro qui se trouve dans "Code-9" est activée par un bouton
dans "Récap"

La procédure ci-jointe fonctionne, tant que je ne change pas le nom
"Facturation" par le "nom du client"
'---------------------------------
Public mois
Sub Récapit()

Dim Z As Integer, Question As String

Workbooks("Récap.xls").Activate
Range("A65536").End(xlUp).Offset(1, 0).Activate
For i = 1 To Workbooks("Récap.xls").Sheets.Count
X = X & i & "...." & Workbooks("Récap.xls").Sheets(i).Name & Chr(10)
Next
mois = Val(InputBox("Feuilles disponibles" & Chr(10) & Chr(10) & X &
Chr(10)
& "Entrez le numéro de la feuille de destination", "Sélection", mois))
If mois < 1 Or mois > i - 1 Then Exit Sub
derlg = Workbooks("Récap.xls").Sheets(mois).Range("A65536").End(3).Row +
1
Workbooks("Récap.xls").Sheets(mois).Range("a" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Numéro].Value

Workbooks("Récap.xls").Sheets(mois).Range("c" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Sit.].Value

Workbooks("Récap.xls").Sheets(mois).Range("d" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Nom].Value

Workbooks("Récap.xls").Sheets(mois).Range("b" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Date].Value

Workbooks("Récap.xls").Sheets(mois).Range("E" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[ht].Value

Workbooks("Récap.xls").Sheets(mois).Range("h" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[ttc].Value
'*************
Application.ScreenUpdating = False
Windows("Récap.xls").Activate
Sheets(mois).Activate
y = Int((Range("H" & derlg) / Range("E" & derlg) - 1) * 100)
If y = 19 Then
Range("F" & derlg) = Range("H" & derlg) - Range("E" & derlg)
Range("G" & derlg) = ""
ElseIf y = 5 Then
Range("G" & derlg) = Range("H" & derlg) - Range("E" & derlg)
Range("F" & derlg) = ""
Else
Range("G" & derlg) = ""
Range("F" & derlg) = ""
MsgBox "TVA de " & y & "% inconnue"
End If
ActiveCell.Offset(1, 0).Range("A1").Select
Application.ScreenUpdating = True
Windows("Récap.xls").Activate

End Sub
'---------------------------------------------------

Salutations!............encore un grand Merci...!!........bonne soirée!

DC

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

Dans ces conditions, il faut oublier Thisworkbook. Si tu as sauvegardé
le classeur facturation à un moment donné, tu peux en récupérer le
nom (il a bien fallu que tu le trouves quelquepart) et au lieu
d'écrire Workbooks("Facturation.xls") , écrire

nomclass="nomduclient" &".xls"
Workbooks("Récap.xls").Sheets(mois).Range("d" & derlg) = _
Workbooks(nomduclient).Sheets("Feuil3").[Nom].Value

A+










Avatar
michdenis
Bonjour DC,

Écoute, maintenant que tu as identifier ton problème, tu devrais être capable de le résoudre.

Quand tu changes le nom du Classeur "Facturation" pour "Un nom de client", les lignes de code où est inscrit "Facturation" n'est
plus exact et cela provoque l'erreur que tu décrivais plutôt.

Si le code est situé dans le classeur Facturation.xls, tu peux faire ceci :

Déclare une variable de type String et affecte lui le nom du classeur. Tu remplaces par la suite le nom du Classeur Facturation.xls
dans ton code par la variable, à titre d'exemple :

Dim NomClasseur As String
NomClasseur = ThisWorkbook.Name

Workbooks("Récap.xls").Sheets(mois).Range("a" & derlg) = _
Workbooks(NomClasseur).Sheets("Feuil3").[Numéro].Value

Workbooks("Récap.xls").Sheets(mois).Range("c" & derlg) = _
Workbooks(NomClasseur).Sheets("Feuil3").[Sit.].Value

Workbooks("Récap.xls").Sheets(mois).Range("d" & derlg) = _
Workbooks(NomClasseur).Sheets("Feuil3").[Nom].Value

Workbooks("Récap.xls").Sheets(mois).Range("b" & derlg) = _
Workbooks(NomClasseur).Sheets("Feuil3").[Date].Value

Workbooks("Récap.xls").Sheets(mois).Range("E" & derlg) = _
Workbooks(NomClasseur).Sheets("Feuil3").[ht].Value

Workbooks("Récap.xls").Sheets(mois).Range("h" & derlg) = _
Workbooks(NomClasseur).Sheets("Feuil3").[ttc].Value



Salutations!





"DC" a écrit dans le message de news: 4373a677$0$6684$
Bonsoir à tous.............................Bonsoir michdenis,

Merci...!!

Pour faire une facture au client,

Au début, j'ai 2 classeurs d'ouvert, "Code-9" + "Facturation"

"Code-9" est un classeur de base de données + les modules de macros,

"Facturation" est un classeur, disons pour modéle de factures, et je
travaille la facture sur ce classeur, en prenant des libellés et des
formules sur le classeur "Code-9" au moyen de Copier/Coller éxécuté avec des
macros,

Quand la facture est terminée, j'ouvre un troisième classeur "Récap" ou par
la fameuse macro, je vais inscrire quelques paramètres
(date+nom+numèro+etc...) de la dite facture qui s'appelle toujours
"Facturation",

Ensuite je retourne sur le classeur "facturation" pour donner le nom du
client à ce classeur et je le sauvegarde sous le "nom du client"

Exécuté de cette façon, tout se passe très bien, mais au jourd'hui, l'on me
demande de pouvoir sauvegarder et changer le "nomdu client", avant d'aller
inscrire les paramètres sur le classeur récap, d'ou la disparation du nom
"Facturation" et l'origine du défaut,

Voilà, je pense avoir été clair.....enfin j'espère...!!

Voici la section de code qui pose problème
'-------------------------------------
Workbooks("Récap.xls").Sheets(mois).Range("a" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Numéro].Value

Workbooks("Récap.xls").Sheets(mois).Range("c" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Sit.].Value

Workbooks("Récap.xls").Sheets(mois).Range("d" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Nom].Value

Workbooks("Récap.xls").Sheets(mois).Range("b" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Date].Value

Workbooks("Récap.xls").Sheets(mois).Range("E" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[ht].Value

Workbooks("Récap.xls").Sheets(mois).Range("h" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[ttc].Value
'-----------------------------------------------------


Salutations!........bonne soirée.......encore Merci...!!.......DC

"michdenis" a écrit dans le message de news:
%
Bonjour DC,

Une solution, c'est d'expliquer clairement ce que tu tentes de faire !

Tu as 3 classeurs ouverts à moment où tu exécutes ces opérations ? Dans
quel classeur est écrite la macro ? Quel est le rôle des 2
autres ? Quel est le but final de l'opération (seulement la section où il
y a problème !) ?

Si tu peux identifier la ligne de code qui est problématique, copie là
dans ton message.


Salutations!



"DC" a écrit dans le message de news:
437307a0$0$19706$
Bonjour à tous............................Bonjour michdenis,

Merci à toi...!!...
(si j'ai bonne mémoire, cette macro me vient de toi michdenis)....

Que veux-tu dire, par il faudrait que je fasses une vérification plus
serré,

J'ai, je pense bien compris, que c'est le changement de nom, qui pose
problème,

Mais, je m'imaginais quand changeant la tournure du morceau de code
concerné
dans la procédure, que l'on pourrait remédier à ce probléme posé,

Et tu sais, moi je suis incapable d'y parvenir sans aide, je fais parti
des
non initiés, qui avancent à petits pas,

Salutations!.....bonne journée........encore Merci...!!........DC

"michdenis" a écrit dans le message de news:
%
Bonjour DC,

| change pas le nom du classeur "Facturation" par le "nom du client",

Bien c'est justement cela, après avoir changer son nom, ton code,
continue
d'utilise en dur le nom de "Facturation" comme nom du
classeur et ce dernier n'existe plus puisqu'il a changé de nom !

Il faudrait probablement que tu fasses une vérification plus serré !


Salutations!



"DC" a écrit dans le message de news:
43722f5a$0$18324$
Bonsoir à tous.....Bonsoir anonymousA...et...michdenis...et...Oliv',

Merci...!!........à tous,

Je ne pense pas qu'il puisse y avoir une erreur, puisque tant que je ne
change pas le nom du classeur "Facturation" par le "nom du client", la
procédure fonctionne trés bien, (michdenis)

par contre, j'ai appliqué ta nouvelle écriture (anonymousA) et c'est
toujours refusée,

Une question Messieurs, ne peut-on pas avoir autre chose que le nom du
classeur comme référence...(nom de feuil3....réf. de code feuille...ou
autre....) qui eux ne changeraient pas, ou bien un principe relatif qui
accepterait n'importe quel nom,

A savoir, qu'au moment du lancement de la macro, il y à toujours 3
classeurs
d'ouvert soit : "Code-9" + "Facturation transformé en Nom du client" +
"Récap" et la macro qui se trouve dans "Code-9" est activée par un bouton
dans "Récap"

La procédure ci-jointe fonctionne, tant que je ne change pas le nom
"Facturation" par le "nom du client"
'---------------------------------
Public mois
Sub Récapit()

Dim Z As Integer, Question As String

Workbooks("Récap.xls").Activate
Range("A65536").End(xlUp).Offset(1, 0).Activate
For i = 1 To Workbooks("Récap.xls").Sheets.Count
X = X & i & "...." & Workbooks("Récap.xls").Sheets(i).Name & Chr(10)
Next
mois = Val(InputBox("Feuilles disponibles" & Chr(10) & Chr(10) & X &
Chr(10)
& "Entrez le numéro de la feuille de destination", "Sélection", mois))
If mois < 1 Or mois > i - 1 Then Exit Sub
derlg = Workbooks("Récap.xls").Sheets(mois).Range("A65536").End(3).Row +
1
Workbooks("Récap.xls").Sheets(mois).Range("a" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Numéro].Value

Workbooks("Récap.xls").Sheets(mois).Range("c" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Sit.].Value

Workbooks("Récap.xls").Sheets(mois).Range("d" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Nom].Value

Workbooks("Récap.xls").Sheets(mois).Range("b" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Date].Value

Workbooks("Récap.xls").Sheets(mois).Range("E" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[ht].Value

Workbooks("Récap.xls").Sheets(mois).Range("h" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[ttc].Value
'*************
Application.ScreenUpdating = False
Windows("Récap.xls").Activate
Sheets(mois).Activate
y = Int((Range("H" & derlg) / Range("E" & derlg) - 1) * 100)
If y = 19 Then
Range("F" & derlg) = Range("H" & derlg) - Range("E" & derlg)
Range("G" & derlg) = ""
ElseIf y = 5 Then
Range("G" & derlg) = Range("H" & derlg) - Range("E" & derlg)
Range("F" & derlg) = ""
Else
Range("G" & derlg) = ""
Range("F" & derlg) = ""
MsgBox "TVA de " & y & "% inconnue"
End If
ActiveCell.Offset(1, 0).Range("A1").Select
Application.ScreenUpdating = True
Windows("Récap.xls").Activate

End Sub
'---------------------------------------------------

Salutations!............encore un grand Merci...!!........bonne soirée!

DC

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

Dans ces conditions, il faut oublier Thisworkbook. Si tu as sauvegardé
le classeur facturation à un moment donné, tu peux en récupérer le
nom (il a bien fallu que tu le trouves quelquepart) et au lieu
d'écrire Workbooks("Facturation.xls") , écrire

nomclass="nomduclient" &".xls"
Workbooks("Récap.xls").Sheets(mois).Range("d" & derlg) = _
Workbooks(nomduclient).Sheets("Feuil3").[Nom].Value

A+










Avatar
DC
Bonjour à tous......................Bonjour michdenis,

Euréka...!!........un grand Merci...!!

En effet tu as trouvé la solution, çà a fonctionné du premier coup, et c'est
plus que parfait, c'est cette histoire de variable que j'ai du mal à
comprendre et lorsque l'on détail la modification que tu as apporté au code,
cela devient presque évident........mais on dit toujours çà
après.......avant on piétine.........enfin Merci...!!

Salutations!..........bonne journée.......encore Merci...!!.......DC

"michdenis" a écrit dans le message de news:
%23%
Bonjour DC,

Écoute, maintenant que tu as identifier ton problème, tu devrais être
capable de le résoudre.

Quand tu changes le nom du Classeur "Facturation" pour "Un nom de client",
les lignes de code où est inscrit "Facturation" n'est
plus exact et cela provoque l'erreur que tu décrivais plutôt.

Si le code est situé dans le classeur Facturation.xls, tu peux faire ceci
:

Déclare une variable de type String et affecte lui le nom du classeur. Tu
remplaces par la suite le nom du Classeur Facturation.xls
dans ton code par la variable, à titre d'exemple :

Dim NomClasseur As String
NomClasseur = ThisWorkbook.Name

Workbooks("Récap.xls").Sheets(mois).Range("a" & derlg) = _
Workbooks(NomClasseur).Sheets("Feuil3").[Numéro].Value

Workbooks("Récap.xls").Sheets(mois).Range("c" & derlg) = _
Workbooks(NomClasseur).Sheets("Feuil3").[Sit.].Value

Workbooks("Récap.xls").Sheets(mois).Range("d" & derlg) = _
Workbooks(NomClasseur).Sheets("Feuil3").[Nom].Value

Workbooks("Récap.xls").Sheets(mois).Range("b" & derlg) = _
Workbooks(NomClasseur).Sheets("Feuil3").[Date].Value

Workbooks("Récap.xls").Sheets(mois).Range("E" & derlg) = _
Workbooks(NomClasseur).Sheets("Feuil3").[ht].Value

Workbooks("Récap.xls").Sheets(mois).Range("h" & derlg) = _
Workbooks(NomClasseur).Sheets("Feuil3").[ttc].Value



Salutations!





"DC" a écrit dans le message de news:
4373a677$0$6684$
Bonsoir à tous.............................Bonsoir michdenis,

Merci...!!

Pour faire une facture au client,

Au début, j'ai 2 classeurs d'ouvert, "Code-9" + "Facturation"

"Code-9" est un classeur de base de données + les modules de macros,

"Facturation" est un classeur, disons pour modéle de factures, et je
travaille la facture sur ce classeur, en prenant des libellés et des
formules sur le classeur "Code-9" au moyen de Copier/Coller éxécuté avec
des
macros,

Quand la facture est terminée, j'ouvre un troisième classeur "Récap" ou
par
la fameuse macro, je vais inscrire quelques paramètres
(date+nom+numèro+etc...) de la dite facture qui s'appelle toujours
"Facturation",

Ensuite je retourne sur le classeur "facturation" pour donner le nom du
client à ce classeur et je le sauvegarde sous le "nom du client"

Exécuté de cette façon, tout se passe très bien, mais au jourd'hui, l'on
me
demande de pouvoir sauvegarder et changer le "nomdu client", avant d'aller
inscrire les paramètres sur le classeur récap, d'ou la disparation du nom
"Facturation" et l'origine du défaut,

Voilà, je pense avoir été clair.....enfin j'espère...!!

Voici la section de code qui pose problème
'-------------------------------------
Workbooks("Récap.xls").Sheets(mois).Range("a" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Numéro].Value

Workbooks("Récap.xls").Sheets(mois).Range("c" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Sit.].Value

Workbooks("Récap.xls").Sheets(mois).Range("d" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Nom].Value

Workbooks("Récap.xls").Sheets(mois).Range("b" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Date].Value

Workbooks("Récap.xls").Sheets(mois).Range("E" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[ht].Value

Workbooks("Récap.xls").Sheets(mois).Range("h" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[ttc].Value
'-----------------------------------------------------


Salutations!........bonne soirée.......encore Merci...!!.......DC

"michdenis" a écrit dans le message de news:
%
Bonjour DC,

Une solution, c'est d'expliquer clairement ce que tu tentes de faire !

Tu as 3 classeurs ouverts à moment où tu exécutes ces opérations ? Dans
quel classeur est écrite la macro ? Quel est le rôle des 2
autres ? Quel est le but final de l'opération (seulement la section où il
y a problème !) ?

Si tu peux identifier la ligne de code qui est problématique, copie là
dans ton message.


Salutations!



"DC" a écrit dans le message de news:
437307a0$0$19706$
Bonjour à tous............................Bonjour michdenis,

Merci à toi...!!...
(si j'ai bonne mémoire, cette macro me vient de toi michdenis)....

Que veux-tu dire, par il faudrait que je fasses une vérification plus
serré,

J'ai, je pense bien compris, que c'est le changement de nom, qui pose
problème,

Mais, je m'imaginais quand changeant la tournure du morceau de code
concerné
dans la procédure, que l'on pourrait remédier à ce probléme posé,

Et tu sais, moi je suis incapable d'y parvenir sans aide, je fais parti
des
non initiés, qui avancent à petits pas,

Salutations!.....bonne journée........encore Merci...!!........DC

"michdenis" a écrit dans le message de news:
%
Bonjour DC,

| change pas le nom du classeur "Facturation" par le "nom du client",

Bien c'est justement cela, après avoir changer son nom, ton code,
continue
d'utilise en dur le nom de "Facturation" comme nom du
classeur et ce dernier n'existe plus puisqu'il a changé de nom !

Il faudrait probablement que tu fasses une vérification plus serré !


Salutations!



"DC" a écrit dans le message de news:
43722f5a$0$18324$
Bonsoir à tous.....Bonsoir anonymousA...et...michdenis...et...Oliv',

Merci...!!........à tous,

Je ne pense pas qu'il puisse y avoir une erreur, puisque tant que je ne
change pas le nom du classeur "Facturation" par le "nom du client", la
procédure fonctionne trés bien, (michdenis)

par contre, j'ai appliqué ta nouvelle écriture (anonymousA) et c'est
toujours refusée,

Une question Messieurs, ne peut-on pas avoir autre chose que le nom du
classeur comme référence...(nom de feuil3....réf. de code feuille...ou
autre....) qui eux ne changeraient pas, ou bien un principe relatif qui
accepterait n'importe quel nom,

A savoir, qu'au moment du lancement de la macro, il y à toujours 3
classeurs
d'ouvert soit : "Code-9" + "Facturation transformé en Nom du client" +
"Récap" et la macro qui se trouve dans "Code-9" est activée par un
bouton
dans "Récap"

La procédure ci-jointe fonctionne, tant que je ne change pas le nom
"Facturation" par le "nom du client"
'---------------------------------
Public mois
Sub Récapit()

Dim Z As Integer, Question As String

Workbooks("Récap.xls").Activate
Range("A65536").End(xlUp).Offset(1, 0).Activate
For i = 1 To Workbooks("Récap.xls").Sheets.Count
X = X & i & "...." & Workbooks("Récap.xls").Sheets(i).Name & Chr(10)
Next
mois = Val(InputBox("Feuilles disponibles" & Chr(10) & Chr(10) & X &
Chr(10)
& "Entrez le numéro de la feuille de destination", "Sélection", mois))
If mois < 1 Or mois > i - 1 Then Exit Sub
derlg = Workbooks("Récap.xls").Sheets(mois).Range("A65536").End(3).Row +
1
Workbooks("Récap.xls").Sheets(mois).Range("a" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Numéro].Value

Workbooks("Récap.xls").Sheets(mois).Range("c" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Sit.].Value

Workbooks("Récap.xls").Sheets(mois).Range("d" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Nom].Value

Workbooks("Récap.xls").Sheets(mois).Range("b" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Date].Value

Workbooks("Récap.xls").Sheets(mois).Range("E" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[ht].Value

Workbooks("Récap.xls").Sheets(mois).Range("h" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[ttc].Value
'*************
Application.ScreenUpdating = False
Windows("Récap.xls").Activate
Sheets(mois).Activate
y = Int((Range("H" & derlg) / Range("E" & derlg) - 1) * 100)
If y = 19 Then
Range("F" & derlg) = Range("H" & derlg) - Range("E" & derlg)
Range("G" & derlg) = ""
ElseIf y = 5 Then
Range("G" & derlg) = Range("H" & derlg) - Range("E" & derlg)
Range("F" & derlg) = ""
Else
Range("G" & derlg) = ""
Range("F" & derlg) = ""
MsgBox "TVA de " & y & "% inconnue"
End If
ActiveCell.Offset(1, 0).Range("A1").Select
Application.ScreenUpdating = True
Windows("Récap.xls").Activate

End Sub
'---------------------------------------------------

Salutations!............encore un grand Merci...!!........bonne soirée!

DC

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

Dans ces conditions, il faut oublier Thisworkbook. Si tu as sauvegardé
le classeur facturation à un moment donné, tu peux en récupérer le
nom (il a bien fallu que tu le trouves quelquepart) et au lieu
d'écrire Workbooks("Facturation.xls") , écrire

nomclass="nomduclient" &".xls"
Workbooks("Récap.xls").Sheets(mois).Range("d" & derlg) = _
Workbooks(nomduclient).Sheets("Feuil3").[Nom].Value

A+















1 2