Macro dans excel
caillou66
Messages postés
2
Statut
Membre
-
Luc -
Luc -
Bonsoir, Pour faire nos horaires nous utilisons excel avec macro depuis plus de 15 ans. Avant certaines macros fonctionnait dans excel 2000 et maintenant dans le 10 cela ne fonctionne plus et il me met comme erreur :
Erreur d'eexécution '1004' :
Microsoft excel ne peut accéder au fichier : "C:\D518E400".
Plusieurs raisons sont possibles : ...
Voici ci-dessous la macro :
Comment récrire cela pour que cela fonctionne sous excel 2010.
Merci d'avance et bonne soirée.
Erreur d'eexécution '1004' :
Microsoft excel ne peut accéder au fichier : "C:\D518E400".
Plusieurs raisons sont possibles : ...
Voici ci-dessous la macro :
Sub TransMoisNouv()
'
' TransMoisNouv Macro
' Macro enregistrée le 20/01/03 par P.S.
'
'
Range("E10:E18").Select
Selection.Copy
Workbooks.Open FileName:="C:\TransferV3.xlsx"
Range("B10:B18").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("D11").Select
ActiveWorkbook.Save
ActiveWindow.Close
Range("G2").Select
Application.CutCopyMode = False
End Sub
Sub TransMoisPréc()
'
' TransMoisPréc Macro
' Macro enregistrée le 20/01/03 par P.S.
'
'
Workbooks.Open FileName:="C:\TransferV3.xlsx"
Range("B10:B18").Select
Selection.Copy
ActiveWindow.WindowState = xlMinimized
ActiveWindow.WindowState = xlMaximized
Range("B10:B18").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Windows("TransferV3.xlsx").Activate
Application.CutCopyMode = False
ActiveWindow.Close
Range("G2").Select
End Sub
Sub MiseàZéro()
'
' MiseàZéro Macro
' Macro enregistrée le 19/01/03 par P.S.
'
'
Workbooks.Open FileName:="C:\TransferV3.xlsx"
Range("B10").Select
ActiveCell.FormulaR1C1 = "0"
Range("B11").Select
ActiveCell.FormulaR1C1 = "0"
Range("B12").Select
ActiveCell.FormulaR1C1 = "0"
Range("B13").Select
ActiveCell.FormulaR1C1 = "0"
Range("B14").Select
ActiveCell.FormulaR1C1 = "0"
Range("B15").Select
ActiveCell.FormulaR1C1 = "0"
Range("B16").Select
ActiveCell.FormulaR1C1 = "0"
Range("B17").Select
ActiveCell.FormulaR1C1 = "0"
Range("B18").Select
ActiveCell.FormulaR1C1 = "0"
Range("B17").Select
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
Sub Action1()
If ActiveWindow.DisplayHeadings = False And ActiveWindow.DisplayGridlines = False Then
ActiveWindow.DisplayHeadings = True
ActiveWindow.DisplayGridlines = True
Else
ActiveWindow.DisplayHeadings = False
ActiveWindow.DisplayGridlines = False
End If
End Sub
Comment récrire cela pour que cela fonctionne sous excel 2010.
Merci d'avance et bonne soirée.
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
4 réponses
-
Bonjour a tous,
Sans .Select et sans .copy
Sub TransMoisNouv() ' TransMoisNouv Macro TR = Range("E10:E18").Value 'mise en memoire plage de cellules Workbooks.Open Filename:="C:\TransferV3.xlsx" Range("B10:B18") = TR 'copie mem plage Workbooks("TransferV3.xlsx").Save ' fermeture ou pas ?? End Sub Sub TransMoisPréc() ' TransMoisPréc Macro Workbooks.Open Filename:="C:\TransferV3.xlsx" TR = Range("B10:B18").Value Workbooks("TransferV3.xlsx").Close True Range("B10").Resize(9) = TR ActiveWorkbook.Save End Sub Sub MiseàZéro() ' MiseàZéro Macro Workbooks.Open Filename:="C:\TransferV3.xlsx" Range("B10:B18") = 0 Workbooks("TransferV3.xlsx").Close True End Sub 'Affiche/masque entete et grille Sub Action1() ActiveWindow.DisplayHeadings = Not ActiveWindow.DisplayHeadings ActiveWindow.DisplayGridlines = Not ActiveWindow.DisplayGridlines End Sub -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonsoir, sur quelle ligne de code l'erreur se produit-elle? -
Bonjour je suis parti en we, j'essaye cela mardi et vous dit quoi. Merci beaucoup et bonne journée
-
Essaye ce code VBA :
Option Explicit Const NomX As String = "TransferV3.xlsx" Const FileX As String = "C:\" & NomX Sub TransMoisNouv() [E10:E18].Copy Workbooks.Open FileX: [B10:B18].PasteSpecial xlValues [D11].Select: ActiveWorkbook.Save: ActiveWindow.Close [G2].Select: Application.CutCopyMode = False End Sub Sub TransMoisPrec() Workbooks.Open FileX: [B10:B18].Copy ActiveWindow.WindowState = xlMinimized ActiveWindow.WindowState = xlMaximized [B10:B18].PasteSpecial xlValues: Windows(NomX).Activate Application.CutCopyMode = False: ActiveWindow.Close [G2].Select End Sub Sub MiseàZéro() Workbooks.Open FileX: [B10:B18] = 0: [B17].Select ActiveWorkbook.Save: ActiveWindow.Close End Sub Sub Action1() With ActiveWindow .DisplayHeadings = Not .DisplayHeadings .DisplayGridlines = Not .DisplayGridlines End With End Sub
Merci de me dire si ça te convient.
-
-
Bonjour,
Quand j'essaye avec ce code, dès la mise à zéro, il m'écrit :
Erreur d'eexécution '1004' :
Microsoft excel ne peut accéder au fichier : "C:\D518E400".
Plusieurs raisons sont possibles : ...
Et si je fais débogage, il va sur la ligne :
ActiveWorkbook.Save
Et il bloque sur l'enregistrement de transferV3.xlsx.
Merci de m'aider
Bonjour,
Sur ton énoncé initial, il y a dans ton code VBA 3× cette ligne :
Workbooks.Open FileName:="C:\TransferV3.xlsx"
Donc ton fichier est clairement "C:\TransferV3.xlsx", et mon
code VBA le reprend 1 seule fois en constante, en 2 étapes :
Étape 1
Const NomX As String = "TransferV3.xlsx"
sans C:\ devant, car dans la sub TransMoisPrec(), il y a :
Windows(NomX).Activate
Étape 2
Const FileX As String = "C:\" & NomX
avec C:\ devant, donc FileX = "C:\TransferV3.xlsx"
(=> même nom que celui de ton code initial),
et ensuite, FileX est utilisé plusieurs fois.
-------------------------------------------------------
Si le nom de fichier bloque, vérifie-le bien : c'est peut-être plutôt :
TransfertV3.xlsx ou TransfertV3.xlsm ?
Dans ce 2ème cas, mets :
Const NomX As String = "TransfertV3.xlsm"
-------------------------------------------------------
Vérifie aussi s'il est bien à la racine du disque dur : C:\
Si ton fichier est dans ton dossier Documents, mets :
Const FileX As String = "C:\Users\caillou66\Documents\" & NomX
à la place de Const FileX As String = "C:\" & NomX
-------------------------------------------------------
Voici d'ailleurs l'intérêt d'utiliser les 2 constantes NomX et FileX :
en cas de modif, il suffit d'adapter le code en un seul endroit
pour chaque : le nom de fichier et le dossier.
-------------------------------------------------------
Pourquoi donc as-tu une erreur pour ce fichier : "C:\D518E400"
alors qu'il n'est pas utilisé dans ton code initial (ni le mien) ?
De plus, s'il faut vraiment que ton code utilise ce fichier, ce serait
mieux d'indiquer l'extension ! exemple : "C:\D518E400.xlsm"
Si tu arrives à résoudre ces problèmes de nom de fichier (et les
dossiers dans lesquels ils sont), ton code devrait marcher.
Si oui, merci de l'indiquer, puis de passer le sujet en résolu.
À te lire.
-