Macro dans excel
Fermé
caillou66
Messages postés
2
Date d'inscription
vendredi 16 juin 2017
Statut
Membre
Dernière intervention
24 juin 2017
-
Modifié le 16 juin 2017 à 21:21
Luc - 24 juin 2017 à 15:58
Luc - 24 juin 2017 à 15:58
A voir également:
- Macro dans excel
- Liste déroulante excel - Guide
- Formule excel - Guide
- Déplacer une colonne excel - Guide
- Convertir chiffre en lettre excel sans macro ✓ - Forum Excel
- Aller à la ligne excel - Guide
4 réponses
f894009
Messages postés
16904
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 mars 2023
1 678
17 juin 2017 à 11:59
17 juin 2017 à 11:59
Bonjour a tous,
Sans .Select et sans .copy
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
21303
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 326
16 juin 2017 à 22:32
16 juin 2017 à 22:32
bonsoir, sur quelle ligne de code l'erreur se produit-elle?
Essaye ce code VBA :
Merci de me dire si ça te convient.
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.
caillou66
Messages postés
2
Date d'inscription
vendredi 16 juin 2017
Statut
Membre
Dernière intervention
24 juin 2017
24 juin 2017 à 13:42
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
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
Luc
>
caillou66
Messages postés
2
Date d'inscription
vendredi 16 juin 2017
Statut
Membre
Dernière intervention
24 juin 2017
24 juin 2017 à 15:58
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.