[VBA] Problème de copier/coller d'un classeur a un autre
Themoliere
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je suis un petit débutant dans le domaine du VBA et je cherche à faire un code faisant la moyenne sur plusieurs fichiers de mesures initialement sous format texte. Le principe de mon code est de faire une boucle qui va sélectionner un a un les fichier, les importer sous format excel, les copier les uns après les autres dans une feuille commune dans le classeur originel du programme puis faire la moyenne. Cependant je rencontre un problème au niveau de la fonction Copier/Coller, j'ai sans arret des message d'erreur quand j'essaye d'activer le classeur original. Pouvez vous m'aider? Merci d'avance!
je suis un petit débutant dans le domaine du VBA et je cherche à faire un code faisant la moyenne sur plusieurs fichiers de mesures initialement sous format texte. Le principe de mon code est de faire une boucle qui va sélectionner un a un les fichier, les importer sous format excel, les copier les uns après les autres dans une feuille commune dans le classeur originel du programme puis faire la moyenne. Cependant je rencontre un problème au niveau de la fonction Copier/Coller, j'ai sans arret des message d'erreur quand j'essaye d'activer le classeur original. Pouvez vous m'aider? Merci d'avance!
Public WB_Principal As Workbook Sub CommandButton1_Click() Dim col col = 1 Set WB_Principal = ActiveWorkbook ' Sélection du classeur source à partir d'une fenêtre cheminfichier = Application.GetOpenFilename("Fichiers txt (*.txt), *.txt, Fichiers xlsx (*.xlsx),*.xlsx") If cheminfichier = "Faux" Then Exit Sub End If ' Récupération du nom du classeur + extension For i = Len(cheminfichier) To 1 Step -1 If Mid(cheminfichier, i, 1) = "\" Then Exit For Next nomfichier = Mid(cheminfichier, i + 1, Len(cheminfichier)) Chemin = Mid(cheminfichier, 1, Len(cheminfichier) - Len(nomfichier)) 'Boucle sur tous les fichiers txt du répertoire. fichier = Dir(Chemin & "*.txt") 'Utilisez la syntaxe suivante pour boucler sur tous les types de fichiers: 'Fichier = Dir(Chemin & "*.*") Do While Len(fichier) > 0 cheminfichier = Chemin & "" & fichier doc = Parcourir(cheminfichier) Copier (doc) fichier = Dir() col = col + 5 Loop 'Unload Me End Sub Function Parcourir(cheminfichier) Workbooks.OpenText Filename:= _ cheminfichier, _ Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, _ Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), _ Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), TrailingMinusNumbers _ :=True For i = Len(cheminfichier) To 1 Step -1 If Mid(cheminfichier, i, 1) = "\" Then Exit For Next nomfichier = Mid(cheminfichier, i + 1, Len(cheminfichier)) Chemin = Mid(cheminfichier, 1, Len(cheminfichier) - Len(nomfichier)) 'Récupération seulement du nom du classeur For i = 1 To Len(nomfichier) Step 1 If Mid(nomfichier, i, 1) = "." Then Exit For End If Next ext = Mid(nomfichier, 1, i - 1) 'copie du fichier de données Worksheets(ext).Select With Application .DecimalSeparator = "." .ThousandsSeparator = " " .UseSystemSeparators = False End With Worksheets(ext).Select Selection.NumberFormat = "0.00" End Function Function Copier(doc) ActiveSheet.UsedRange.Select Selection.Copy Workbooks("WB_Principal").Activates Worksheets("Feuil2").Activates Cells(1, col).Select ActiveSheet.Paste End Function
A voir également:
- [VBA] Problème de copier/coller d'un classeur a un autre
- Retrouver un copier-coller android - Guide
- Style d'écriture a copier coller - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
- Retrouver un copier-coller iphone ✓ - Forum iPhone
5 réponses
Bonjour,
Workbooks("WB_Principal").Activates: WB_Principal est une variable, donc ne pas mettre entre doubles cotes et en principe Activate sans s, sauf si vous avez un excel particulier.
bonne suite
Workbooks("WB_Principal").Activates: WB_Principal est une variable, donc ne pas mettre entre doubles cotes et en principe Activate sans s, sauf si vous avez un excel particulier.
bonne suite
Merci beaucoup f894009, le probleme c'est que quand je ne met pas les "", excel me renvoie a une "incompatibilité de type" pourtant j'ai bien définit WB_principal comme un workbook au début du code.
Je suppose que vous voulez dire module? Non je ne l'ai pas fait. J'ai tapé directement tout mon code dans la même page.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question