Signaler

Macro dans excel

Posez votre question caillou66 2Messages postés vendredi 16 juin 2017Date d'inscription 24 juin 2017 Dernière intervention - Dernière réponse le 24 juin 2017 à 15:58 par 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 :
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.
Afficher la suite 
Utile
+1
plus moins
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

Donnez votre avis
Utile
+0
plus moins
bonsoir, sur quelle ligne de code l'erreur se produit-elle?
Donnez votre avis
Utile
+0
plus moins
Bonjour je suis parti en we, j'essaye cela mardi et vous dit quoi. Merci beaucoup et bonne journée
Donnez votre avis
Utile
-1
plus moins
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.
 
Luc- 20 juin 2017 à 01:11
Edit : dans les 2 premières subs, remplacer [B10:B18].PasteSpecial xlValues
par [B10].PasteSpecial xlValues
Répondre
caillou66 2Messages postés vendredi 16 juin 2017Date d'inscription 24 juin 2017 Dernière intervention - 24 juin 2017 à 13:42
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
Répondre
Luc- 24 juin 2017 à 15:58
 
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.
 
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !