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

10 réponses

1 2
Avatar
anonymousA
bonjour,

si la macro est dans le classeur qui porte le nom du client, remplacer
partout dans la proc Workbooks("Récap.xls") par thisworkbook.

a+

DC wrote:
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 l es
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 SettingsDanielMes documentsDaniel tous
ensemblesDaniel TableurRécap.xls"

'ChDir "C:Documents and SettingsDanielMes documentsDaniel tous
ensemblesDaniel TableurRé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 & Ch r(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).Ro w + 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


Avatar
anonymousA
erratum. c'est bien sur Workbooks("Facturation.xls") qu'l faut
comprendre
Avatar
DC
Bonjour à tous,.............Bonjour anonymousA,........et Merci...!!

Et bien non, la macro n'est pas dans le classeur qui porte le nom du
client,.........( et c'est certainement pourquoi la réaction.........)

Réaction :.....Fenêtre VB.......Erreur d'éxécution'9':.........L'indice
n'appartient pas à la sélection......et le débogage sélectionne la fameuse
ligne de code,

Elle se trouve dans un troisième classeur "Code-9", qui lui à toutes les
macro et il est toujours ouvert le premier car il gère l'ensemble des
applications, c'est en plus un semblant de base de données, que j'utilise en
Copier/Coller pour les libellés et certaines formules,

C'est vrais que j'ais omis de le préciser, mais l'ensemble des autres macros
ne me pose pas de problèmes, il n'y à que celle-ci,

Je te joints les 2 lignes de code : l'originale + la modifiée
'------------------------------------
Workbooks("Récap.xls").Sheets(mois).Range("d" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Nom].Value
'------------------------------------
Workbooks("Récap.xls").Sheets(mois).Range("d" & derlg) = _
ThisWorkbook.Sheets("Feuil3").[Nom].Value
'------------------------------------

Salutation!.............Merci à toi...!!...................DC

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

erratum. c'est bien sur Workbooks("Facturation.xls") qu'l faut
comprendre



Avatar
michdenis
Bonjour DC,

Difficile à dire... mais ce type d'erreur "Code-9" provient d'une mauvaise identification d'un objet. Est-ce que tous les noms de
feuilles citées dans ta procédure existent vraiment ? Les noms des Classeurs ? Aucune faute d'orthographe ? As-tu réellement une
plage nommée dans le classeur qui exécute ces macros qui porte l'appellation "NOM" ?

C'est de ce type d'erreur qu'il s'agit ... fait les vérifications d'usage !


Salutations!


"DC" a écrit dans le message de news: 4371fb30$0$21282$
Bonjour à tous,.............Bonjour anonymousA,........et Merci...!!

Et bien non, la macro n'est pas dans le classeur qui porte le nom du
client,.........( et c'est certainement pourquoi la réaction.........)

Réaction :.....Fenêtre VB.......Erreur d'éxécution'9':.........L'indice
n'appartient pas à la sélection......et le débogage sélectionne la fameuse
ligne de code,

Elle se trouve dans un troisième classeur "Code-9", qui lui à toutes les
macro et il est toujours ouvert le premier car il gère l'ensemble des
applications, c'est en plus un semblant de base de données, que j'utilise en
Copier/Coller pour les libellés et certaines formules,

C'est vrais que j'ais omis de le préciser, mais l'ensemble des autres macros
ne me pose pas de problèmes, il n'y à que celle-ci,

Je te joints les 2 lignes de code : l'originale + la modifiée
'------------------------------------
Workbooks("Récap.xls").Sheets(mois).Range("d" & derlg) = _
Workbooks("Facturation.xls").Sheets("Feuil3").[Nom].Value
'------------------------------------
Workbooks("Récap.xls").Sheets(mois).Range("d" & derlg) = _
ThisWorkbook.Sheets("Feuil3").[Nom].Value
'------------------------------------

Salutation!.............Merci à toi...!!...................DC

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

erratum. c'est bien sur Workbooks("Facturation.xls") qu'l faut
comprendre



Avatar
anonymousA
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
Oliv'
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+


Ne pourrais tu pas convertir les formules en données avant d'enregistrer ta
"facture client" comme cela plus besoin de lien avec le fichier source ?

--
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
les sites références:
Excel :http://www.excelabo.net http://xcell05.free.fr/
http://dj.joss.free.fr/
http://frederic.sigonneau.free.fr/ http://www.excel-vba-francais.com/
Word : http://faqword.free.fr/
Outlook :http://faq.outlook.free.fr/
Sql :http://sqlpro.developpez.com/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Avatar
DC
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,

| 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,

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,

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