VBA Qu'est qui cloche dans mon code

  • Initiateur de la discussion Initiateur de la discussion Arpette
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Arpette

XLDnaute Impliqué
Bonjour à toutes et tous,
j'ouvre un nouveau post, car j'ai un peu avancé. Au lancement de ma macro, j'éfface les données des feuilles "WPT" & "FICHE" de mon fichier de base. J'ouvre 2 classeurs, je copie les feuilles et je veux les coller dans mon fichier de base. Mais je ne peux pas copier, message " Propriété ou méthode non gérée par l'objet "
Merci de votre aide.
@+
Code:
Option Explicit
Sub GPS()
Dim LeChemin As String
Dim LeChemin1 As String
Dim ClasseurFiche As Excel.Workbook
Dim ClasseurWpt As Excel.Workbook

Application.ScreenUpdating = False

LeChemin = "J:\cendre fiches"
LeChemin1 = "J:\cendre wpts"
 
'On ouvre les deux classeurs
Set ClasseurFiche = Excel.Workbooks.Open(LeChemin)
Set ClasseurWpt = Excel.Workbooks.Open(LeChemin1)
 
Workbooks(ThisWorkbook.Name).Activate
Application.DisplayAlerts = False
Sheets("WPT").UsedRange.Clear
Sheets("FICHE").UsedRange.Clear
Application.DisplayAlerts = True

ClasseurWpt.Sheets("cendre wpts").Range("A1:Z65536").Copy
Workbooks(ThisWorkbook.Name).Sheets("WPT").Range("A1:Z65536").Paste
'Cest ici que çà coince
ClasseurFiche.Sheets("cendre fiches").Range("A1:Z65536").Copy
Workbooks(ThisWorkbook.Name).Sheets("FICHE").Range("A1:Z65536").Paste
'Et certainement ici

'On ferme les deux classeurs
ClasseurFiche.Close
ClasseurWpt.Close
 
Set ClasseurFiche = Nothing
Set ClasseurWpt = Nothing

Application.ScreenUpdating = True
End Sub

C'est ici que çà ratatouille
Code:
ClasseurWpt.Sheets("cendre wpts").Range("A1:Z65536").Copy
Workbooks(ThisWorkbook.Name).Sheets("WPT").Range("A1:Z65536").Paste
'Cest ici que çà coince
ClasseurFiche.Sheets("cendre fiches").Range("A1:Z65536").Copy
Workbooks(ThisWorkbook.Name).Sheets("FICHE").Range("A1:Z65536").Paste
'Et certainement ici
 
Re : VBA Qu'est qui cloche dans mon code

Re, je me suis emballé un peu vite, j'ai encore deux problèmes.

1) les fichiers que j'ouvre sont des fichiers .csv. Si je les ouvre seuls, ils ont une structure normale, mais via la macro j'ai les ";".

2) les copies se font correctement, mais quand je colle, je ne change pas de feuille, je reste sur la première feuille active.

Merci de votre aide.
@+
Code:
Option Explicit
Sub GPS()
Dim LeChemin As String
Dim LeChemin1 As String
Dim ClasseurFiche As Excel.Workbook
Dim ClasseurWpt As Excel.Workbook

Application.ScreenUpdating = False

LeChemin = "J:\cendre fiches.csv"
LeChemin1 = "J:\cendre wpts.csv"
 
'On ouvre les deux classeurs
Set ClasseurFiche = Excel.Workbooks.Open(LeChemin)
Set ClasseurWpt = Excel.Workbooks.Open(LeChemin1)
 
Workbooks(ThisWorkbook.Name).Activate
Application.DisplayAlerts = False
Sheets("WPT").UsedRange.Clear
Sheets("FICHE").UsedRange.Clear


ClasseurWpt.Sheets("cendre wpts").Range("A1:Z65536").Copy
ThisWorkbook.Sheets("WPT").Paste Range("A1")

ClasseurFiche.Sheets("cendre fiches").Range("A1:Z65536").Copy
ThisWorkbook.Sheets("FICHE").Paste Range("A1")

'On ferme les deux classeurs

ClasseurFiche.Close
ClasseurWpt.Close
Application.DisplayAlerts = True

Set ClasseurFiche = Nothing
Set ClasseurWpt = Nothing

Application.ScreenUpdating = True
End Sub
 
Re : VBA Qu'est qui cloche dans mon code

Salut Arpette 🙂,
Vu que tu utilises du CSV, le plus simple est de l'importer 🙄...
Utilises l'enregistreur pour modifier mon code (2003 et 2010 ne sont pas forcéments exactement les mêmes), mais en gros, ça donnera ça 😛...
Code:
Sub GPS()
Dim LeChemin As String
Dim LeChemin1 As String
Application.ScreenUpdating = False
LeChemin = "J:\cendre fiches.csv"
LeChemin1 = "J:\cendre wpts.csv"
Application.DisplayAlerts = False
With ThisWorkbook
.Sheets("WPT").Cells.Clear
.Sheets("FICHE").Cells.Clear
With .Sheets("WPT").QueryTables.Add(Connection:= _
    "TEXT;" & LeChemin1, Destination:=Range("$A$1"))
    .Name = "Wpts"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 850
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = False
    .TextFileSemicolonDelimiter = True
    .TextFileCommaDelimiter = False
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
End With
With .Sheets("FICHE").QueryTables.Add(Connection:= _
    "TEXT;" & LeChemin, Destination:=Range("$A$1"))
    .Name = "Fiches"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 850
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = False
    .TextFileSemicolonDelimiter = True
    .TextFileCommaDelimiter = False
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Bon dimanche 😎
 
Re : VBA Qu'est qui cloche dans mon code

Bonjour Pierrot, j'ai un message d'erreur "Fonction ou variable attendue".
Merci de ton aide.
@+
Code:
Sub GPS()
Dim LeChemin As String
Dim LeChemin1 As String
Dim ClasseurFiche As Excel.Workbook
Dim ClasseurWpt As Excel.Workbook

Application.ScreenUpdating = False

LeChemin = "J:\cendre fiches.csv"
LeChemin1 = "J:\cendre wpts.csv"
 
'On ouvre les deux classeurs
Set ClasseurFiche = Excel.Workbooks.OpenText(LeChemin)
Set ClasseurWpt = Excel.Workbooks.OpenText(LeChemin1)
 
Workbooks(ThisWorkbook.Name).Activate
Application.DisplayAlerts = False
Sheets("WPT").UsedRange.Clear
Sheets("FICHE").UsedRange.Clear


ClasseurWpt.Sheets("cendre wpts").Range("A1:Z65536").Copy
ThisWorkbook.Sheets("WPT").Paste Range("A1")

ClasseurFiche.Sheets("cendre fiches").Range("A1:Z65536").Copy
ThisWorkbook.Sheets("FICHE").Paste Range("A1")

'On ferme les deux classeurs

ClasseurFiche.Close
ClasseurWpt.Close
Application.DisplayAlerts = True

Set ClasseurFiche = Nothing
Set ClasseurWpt = Nothing

Application.ScreenUpdating = True
End Sub
 
Re : VBA Qu'est qui cloche dans mon code

Rebonjour, j'ai finalement réussi à ouvrir mes deux fichiers csv au bon format. Maintenant je souhaite en copier les feuilles et les coller dans dans mon fichier de base.
Cà fonctionnait, çà ne fonctionne plus 😕
Merci de votre aide
@+
Code:
Option Explicit
Sub GPS()
Dim LeChemin As String
Dim LeChemin1 As String
Dim ClasseurFiche As Excel.Workbook
Dim ClasseurWpt As Excel.Workbook

Application.ScreenUpdating = False
'On donne le chemin
LeChemin = "J:\cendre fiches.csv"
LeChemin1 = "J:\cendre wpts.csv"
 
'On ouvre les deux classeurs .csv
Workbooks.Open Filename:=LeChemin, Origin:=xlWindows, Local:=True
Workbooks.Open Filename:=LeChemin1, Origin:=xlWindows, Local:=True

'On éfface le contenu des deux feuilles du classeur de base
Workbooks(ThisWorkbook.Name).Activate
Application.DisplayAlerts = False
Sheets("WPT").UsedRange.Clear
Sheets("FICHE").UsedRange.Clear

'On doit copier la feuille "cendre wpts" et la colle dans la feille WPT
ClasseurWpt.csv.Sheets("cendre wpts").Range("A1:Z65536").Copy
Workbooks(ThisWorkbook.Name).Sheets("WPT").Paste Range("A1")

'On doit copier la feuille "cendre fiches" et la colle dans la feille FICHE
ClasseurFiche.Sheets("cendre fiches").Range("A1:Z65536").Copy
Workbooks(ThisWorkbook.Name).Sheets("FICHE").Paste Range("A1")

'On ferme les deux classeurs

ClasseurFiche.Close
ClasseurWpt.Close
Application.DisplayAlerts = True

Set ClasseurFiche = Nothing
Set ClasseurWpt = Nothing

Application.ScreenUpdating = True
End Sub
 
Re : VBA Qu'est qui cloche dans mon code

Re 🙂,
Bonjour JNP et merci pour ta réponse. Cà fonctionne bien, le seul problème est que la macro ne change pas de feuille et çà bug quand je veux coller.
J'ai l'impresion que tu pars dans tous les sens 🙄...
Ne change pas de feuille : un CSV est monofeuille 😕... Et si c'est le changement de feuille réceptrice, j'ai bien indiqué :
Code:
With .Sheets("WPT").QueryTables.Add(Connection:= _
"TEXT;" & LeChemin1, Destination:=Range("$A$1"))
...
End With
With .Sheets("FICHE").QueryTables.Add(Connection:= _
"TEXT;" & LeChemin, Destination:=Range("$A$1"))
...
Quand je veux coller : que veux tu coller quand les imports se sont déjà déroulés dans les bonnes feuilles 😕...
La méthode que je t'ai proposé, c'est l'importation directe de tes CSV dans les bonnes feuilles, plus d'ouverture de fichier, plus de copier/coller, bref, je ne comprends plus rien à ton problème 🙄...
Bonne suite 😎
 
Re : VBA Qu'est qui cloche dans mon code

Bonsoir JNP, j'ai adopté ton code, il est un peu long mais il a le mérite de fonctionner contrairement au mien. Je ne comprends pas pourquoi après avoir ouvert les deux fichiers csv, je ne puisse pas les copier et les coller dans mon fichier de base. Mais bon je reste sur ton code, tu as raison plus besoin d'ouvrir et de copier coller.
PS: j'ai copier ton code tel quel pas de problème entre 2003 et 2010, il manquait juste un End With à la fin.
Merci beaucoup.
@+
JNP, si je recommence l'opération, je passe pas sur la feuille "Fiche", j'ai une erreur "La plage de destination n'est pas dans la même feuille de calcul que celle dans laquelle la table de requête est créée.
Merci de ton aide
@+
 
Dernière édition:
Re : VBA Qu'est qui cloche dans mon code

Re 🙂,
L'ouverture d'un fichier CSV est subtilement différente par rapport à son import, mais je ne sais pas où, vu que j'ai toujours utilisé l'importation 😱...
La longueur n'est pas impérative, il faudrait faire des tests ou vérifier avec l'aide, une partie des critères sont facultatif, et il pourrait être réduit à quelques lignes, c'était surtout une piste que je voulais te donner 🙄...
Pour les problèmes de tables de requêtes, peut-être faut-il sélectionner la feuille (il ne me semble pas, mais bon...), sinon, en principe, le fait de nettoyer la feuille en Cells.Clear supprime la précédente connexion (UsedRange.Clear, je ne suis pas sûr), mais si le problème persiste, il peut s'agir d'une connexion existante qui ne peux être remplacée et qui doit être supprimée...
Bon courage 😎
 
Re : VBA Qu'est qui cloche dans mon code

Re 🙂,
Pour les problèmes de tables de requêtes, peut-être faut-il sélectionner la feuille (il ne me semble pas, mais bon...),
Modifie en ajoutant la sélection de feuille, comme je te l'avais suggéré 🙄...
Code:
...
End With
.Sheets("FICHE").Select
With .Sheets("FICHE").QueryTables.Add(Connection:= _
    "TEXT;" & LeChemin, Destination:=Range("$A$1"))
...
Chez moi, ça fonctionne 😛...
Bonne journée 😎
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
1 K
Réponses
17
Affichages
2 K
B
Réponses
0
Affichages
627
boudiaf.linda
B
K
Réponses
8
Affichages
2 K
kuistau
K
M
Réponses
4
Affichages
2 K
mathieu42400
M
B
Réponses
6
Affichages
1 K
Banjounet
B
S
  • Question Question
Réponses
15
Affichages
7 K
samia89
S
D
Réponses
5
Affichages
1 K
decricri
D
J
Réponses
1
Affichages
1 K
Retour