[VBA] Problème de copier/coller d'un classeur a un autre
Themoliere
-
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17417 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
- Historique copier coller windows - Accueil - Informatique
- Copier coller multiple - Guide
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