A voir également:
- VBA : Probleme sur macro d'import
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Vba range avec variable ✓ - Forum VB / VBA
1 réponse
Bonjour,
je regarde ton code et quelque chose m'échappe.
D'après ton code, tu ouvres un fichier qui s'appelle fichier puis ce fichier s'appelle fichier de travail.
Tu cherches à ouvrir le fichier de travail (alors qu'il est déjà ouvert) d'ou ton problème.
et tu dis que ton fichier source = ton fichier destination.
voici le code corrigé
Sub Import_Risks()
Application.ScreenUpdating = False
Dim Fichier_Travail As String, Fichier As String
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Dim classeurSource As Workbook, classeurDestination As Workbook
'définir le classeur destination
classeurDestination = activeworkbook.name
ChDrive CHEMIN2
ChDir CHEMIN2
'Set une variable qui va contenir le nom et le chemin du fichier à ouvrir.
Fichier = Application.GetOpenFilename("Excel Files (*.xls), *.xls", 1, "Select the supplier extract") 'On ouvre la fenêtre et conserve le nom du fichier choisi dans une variable
'Test si un fichier a été sélectionné
If Fichier = "Faux" Then
Msg = "Aucun fichier sélectionné. SVP, veuillez recommencer !" ' Définit le message.
Style = vbOKOnly ' Définit les boutons.
Title = "Abandon de la procédure !" ' Définit le titre.
' Affiche le message.
Response = MsgBox(Msg, Style, Title)
Exit Sub 'Sort de la macro puisqu'aucun fichier n'a été sélectionné
Else 'Sinon, on ouvre le fichier sélectionné
Workbooks.OpenText Filename:=Fichier
Fichier_Travail = ActiveWorkbook.Name 'On donne à une variable le nom de ce fichier qu'on vient d'ouvrir.
End If
'copier les données du classeur source vers le classeur destination
Fichier_Travail .Sheets("Risks").Range("A1:BE1000").Copy
With classeurDestination.Sheets("Risks_Database").Range("A1")
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats 'Optionnel
End With
'Vide le presse papiers
Application.CutCopyMode = False
'fermer le classeur source
classeurSource.Close False
End Sub
je regarde ton code et quelque chose m'échappe.
D'après ton code, tu ouvres un fichier qui s'appelle fichier puis ce fichier s'appelle fichier de travail.
Tu cherches à ouvrir le fichier de travail (alors qu'il est déjà ouvert) d'ou ton problème.
et tu dis que ton fichier source = ton fichier destination.
voici le code corrigé
Sub Import_Risks()
Application.ScreenUpdating = False
Dim Fichier_Travail As String, Fichier As String
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Dim classeurSource As Workbook, classeurDestination As Workbook
'définir le classeur destination
classeurDestination = activeworkbook.name
ChDrive CHEMIN2
ChDir CHEMIN2
'Set une variable qui va contenir le nom et le chemin du fichier à ouvrir.
Fichier = Application.GetOpenFilename("Excel Files (*.xls), *.xls", 1, "Select the supplier extract") 'On ouvre la fenêtre et conserve le nom du fichier choisi dans une variable
'Test si un fichier a été sélectionné
If Fichier = "Faux" Then
Msg = "Aucun fichier sélectionné. SVP, veuillez recommencer !" ' Définit le message.
Style = vbOKOnly ' Définit les boutons.
Title = "Abandon de la procédure !" ' Définit le titre.
' Affiche le message.
Response = MsgBox(Msg, Style, Title)
Exit Sub 'Sort de la macro puisqu'aucun fichier n'a été sélectionné
Else 'Sinon, on ouvre le fichier sélectionné
Workbooks.OpenText Filename:=Fichier
Fichier_Travail = ActiveWorkbook.Name 'On donne à une variable le nom de ce fichier qu'on vient d'ouvrir.
End If
'copier les données du classeur source vers le classeur destination
Fichier_Travail .Sheets("Risks").Range("A1:BE1000").Copy
With classeurDestination.Sheets("Risks_Database").Range("A1")
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats 'Optionnel
End With
'Vide le presse papiers
Application.CutCopyMode = False
'fermer le classeur source
classeurSource.Close False
End Sub