Appliquer un sub à un ensemble de fichiers excel (même dossier)

[Fermé]
Signaler
Messages postés
10
Date d'inscription
jeudi 3 juillet 2014
Statut
Membre
Dernière intervention
8 juillet 2014
-
Messages postés
10
Date d'inscription
jeudi 3 juillet 2014
Statut
Membre
Dernière intervention
8 juillet 2014
-
Bonjour à tous,
Voilà mon problème, j'ai créé un sub de traitement de fichiers excel, dans le but d'une standardisation de la présentation, tr(fichier), et je souhaiterais l'appliquer à tous les fichiers d'un dossier (automatisation due au nombre important de ces derniers).
Pour cela, j'ai écrit le sub fulltr() censé balayer tous les fichiers excel d'un dossier donné.

Malheureusement, le process plante à la ligne 22, m'indiquant que le fichier ("nom du fichier") est introuvable. Il n'a pourtant pas été renommé, supprimé ou déplacé entre temps.

Une idée ?

PS : Ligne 22 >> Set wb = Workbooks.Open(fichier)


Sub fulltr()
Chemin = "C:\Users\vbuzzegoli\Desktop\Test VB\" 'Avec \ à la fin
fichier = Dir(Chemin & "*.xls")
Do While Len(fichier) > 0
Call tr(fichier)
MsgBox fichier
fichier = Dir() 'On passe au fichier suivant
Loop


End Sub

Sub tr(fichier)
Dim i As Integer
Dim j As Integer
Dim a As String
Dim b As String
Dim c As Integer
Dim z As Integer
Dim wb As Workbook
Dim ws As Worksheet
Dim appExcel As Excel.Application
Set appExcel = CreateObject("Excel.Application")
Set wb = appExcel.Workbooks.Open(fichier)
Set ws = wb.Worksheets("VK_Preisliste")
Sheets.Add.Name = "Results"
a = Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B16")
j = 1
c = 1
For i = 15 To 1000
If Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i).Font.Bold Then
Application.ThisWorkbook.Worksheets("Results").Range("A" & j) = a
Application.ThisWorkbook.Worksheets("Results").Range("B" & j) = c
Application.ThisWorkbook.Worksheets("Results").Range("C" & j) = Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i)
c = c + 1
j = j + 1
ElseIf Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i) = "" Then
Exit For
End If
Next
For i = 15 To 1000
If Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i).Font.Bold Then
b = Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i)
ElseIf Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i) <> "" Then
Application.ThisWorkbook.Worksheets("Results").Range("A" & j) = a
Application.ThisWorkbook.Worksheets("Results").Range("B" & j) = b
Application.ThisWorkbook.Worksheets("Results").Range("C" & j) = Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i)
j = j + 1
Else
Exit For
End If
Next
ActiveWorkbook.Worksheets("Results").Activate
ActiveWindow.Zoom = 30
Worksheets("Results").Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results").Range("A1:C500").Columns.AutoFit
Worksheets("Results").Range("A1:C500").Rows.AutoFit
Worksheets("Results").Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results").Range("A1:C500").Columns.AutoFit
Worksheets("Results").Range("A1:C500").Rows.AutoFit
Worksheets("Results").Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results").Range("A1:C500").Columns.AutoFit
Worksheets("Results").Range("A1:C500").Rows.AutoFit
Worksheets("Results").Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results").Range("A1:C500").Columns.AutoFit
Worksheets("Results").Range("A1:C500").Rows.AutoFit
Worksheets("Results").Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results").Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results").Range("A1:C500").Columns.AutoFit
Worksheets("Results").Range("A1:C500").Rows.AutoFit
z = fichier & "(tr)"
ActiveWorkbook.SaveAs Filename:=z
Set ws = Nothing
Set wb = Nothing

End Sub

Merci d'avance !

5 réponses

Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 174
Bonjour,

As-tu passé ton code en mode débogage ? En passant la souris sur "fichier" pour la ligne qui beug, tu aurais pu voir le problème. Il manque le chemin d'accès ..

Call tr(chemin & fichier)


«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
Messages postés
10
Date d'inscription
jeudi 3 juillet 2014
Statut
Membre
Dernière intervention
8 juillet 2014

Merci beaucoup, effectivement c'était tout bête (c'est mon premier code je suis très loin d'être à l'aise).

Un autre souci est survenu cependant,
Voilà mon programme légèrement adapté :


Sub fulltr()
chemin = "C:\Users\vbuzzegoli\Desktop\Test VB\" 'Avec \ à la fin
fichier = Dir(chemin & "*.xls")
z = 1
Do While Len(fichier) > 0
Call tr(chemin & fichier, z)
MsgBox fichier
z = z + 1
fichier = Dir() 'On passe au fichier suivant
Loop


End Sub

Sub tr(fichier, z)
Dim i As Integer
Dim j As Integer
Dim a As String
Dim b As String
Dim c As Integer
Dim wb As Workbook
Dim ws As Worksheet
Dim appExcel As Excel.Application
Set appExcel = CreateObject("Excel.Application")
Set wb = appExcel.Workbooks.Open(fichier)
Set ws = wb.Worksheets("VK_Preisliste")
wb.Activate
ws.Activate
Sheets.Add.Name = "Results " & z
a = Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B16")
j = 1
c = 1
For i = 15 To 1000
If Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i).Font.Bold Then
Application.ThisWorkbook.Worksheets("Results " & z).Range("A" & j) = a
Application.ThisWorkbook.Worksheets("Results " & z).Range("B" & j) = c
Application.ThisWorkbook.Worksheets("Results " & z).Range("C" & j) = Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i)
c = c + 1
j = j + 1
ElseIf Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i) = "" Then
Exit For
End If
Next
For i = 15 To 1000
If Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i).Font.Bold Then
b = Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i)
ElseIf Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i) <> "" Then
Application.ThisWorkbook.Worksheets("Results " & z).Range("A" & j) = a
Application.ThisWorkbook.Worksheets("Results " & z).Range("B" & j) = b
Application.ThisWorkbook.Worksheets("Results " & z).Range("C" & j) = Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i)
j = j + 1
Else
Exit For
End If
Next
ActiveWorkbook.Worksheets("Results " & z).Activate
ActiveWindow.Zoom = 30
Worksheets("Results " & z).Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Columns.AutoFit
Worksheets("Results " & z).Range("A1:C500").Rows.AutoFit
Worksheets("Results " & z).Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Columns.AutoFit
Worksheets("Results " & z).Range("A1:C500").Rows.AutoFit
Worksheets("Results " & z).Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Columns.AutoFit
Worksheets("Results " & z).Range("A1:C500").Rows.AutoFit
Worksheets("Results " & z).Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Columns.AutoFit
Worksheets("Results " & z).Range("A1:C500").Rows.AutoFit
Worksheets("Results " & z).Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Columns.AutoFit
Worksheets("Results " & z).Range("A1:C500").Rows.AutoFit
ActiveWorkbook.Save
Set ws = Nothing
Set wb = Nothing

End Sub

Les nouvelles pages Results 1, Results 2, etc.. se créent effectivement sur le fichier précédemment ouvert (premier fichier de la liste), il y en a le même nombre que le nombre de fichiers à traiter, mais les informations traitées sont toujours les mêmes (celle du présent fichier) ! Comment puis-je faire ? :/
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 174
je ne comprends pas bien ce que tu cherches à faire... :(

Toutefois il y a certaines choses inutiles dans le code:

Pourquoi créer un objet Excel ? Excel est déjà ouvert.
    Dim appExcel As Excel.Application  'Inutile
    Set appExcel = CreateObject("Excel.Application") 'Inutile

Faire juste
Set wb = Workbooks.Open(fichier)

Idem pour:
    wb.Activate 'Inutile
    ws.Activate 'Inutile

Faire
wb.Sheets.Add.Name = "Results " & z


Tous les
Application.
sont également inutiles.

Attention au IF ... THEN .. ELSEIF ... Si la première condition du If est vraie, le code ne passera jamais dans le ELSEIF.

Pourquoi faire 2 boucle FOR ... NEXT ? Dans les 2 boucles les conditions de test du 1er IF sont les mêmes ?
Messages postés
10
Date d'inscription
jeudi 3 juillet 2014
Statut
Membre
Dernière intervention
8 juillet 2014

Tout d'abord voici où j'en suis :


Sub fulltr()
chemin = "C:\Users\vbuzzegoli\Desktop\Test VB\" 'Avec \ à la fin
fichier = Dir(chemin & "*.xls")
z = 1
Do While Len(fichier) > 0
Call tr(chemin & fichier, z)
MsgBox fichier
z = z + 1
fichier = Dir() 'On passe au fichier suivant
Loop


End Sub

Sub tr(fichier, z)
Dim i As Integer
Dim j As Integer
Dim a As String
Dim b As String
Dim c As Integer
Dim wb As Workbook
Dim ws As Worksheet
Set wb = Workbooks.Open(fichier)
Set ws = wb.Worksheets("VK_Preisliste")
wb.Sheets.Add.Name = "Results " & z
a = Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B16")
j = 1
c = 1
For i = 15 To 1000
If Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i).Font.Bold Then
Application.ThisWorkbook.Worksheets("Results " & z).Range("A" & j) = a
Application.ThisWorkbook.Worksheets("Results " & z).Range("B" & j) = c
Application.ThisWorkbook.Worksheets("Results " & z).Range("C" & j) = Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i)
c = c + 1
j = j + 1
ElseIf Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i) = "" Then
Exit For
End If
Next
For i = 15 To 1000
If Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i).Font.Bold Then
b = Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i)
ElseIf Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i) <> "" Then
Application.ThisWorkbook.Worksheets("Results " & z).Range("A" & j) = a
Application.ThisWorkbook.Worksheets("Results " & z).Range("B" & j) = b
Application.ThisWorkbook.Worksheets("Results " & z).Range("C" & j) = Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i)
j = j + 1
Else
Exit For
End If
Next
ActiveWorkbook.Worksheets("Results " & z).Activate
ActiveWindow.Zoom = 30
Worksheets("Results " & z).Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Columns.AutoFit
Worksheets("Results " & z).Range("A1:C500").Rows.AutoFit
Worksheets("Results " & z).Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Columns.AutoFit
Worksheets("Results " & z).Range("A1:C500").Rows.AutoFit
Worksheets("Results " & z).Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Columns.AutoFit
Worksheets("Results " & z).Range("A1:C500").Rows.AutoFit
Worksheets("Results " & z).Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Columns.AutoFit
Worksheets("Results " & z).Range("A1:C500").Rows.AutoFit
Worksheets("Results " & z).Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Columns.AutoFit
Worksheets("Results " & z).Range("A1:C500").Rows.AutoFit

ActiveWorkbook.Save
Set ws = Nothing
Set wb = Nothing

End Sub

J'ai toute une liste de fichiers excel dans un dossier prédéfini, tous présentés de la même manière. Je voudrais en ouvrir un, lancer le script et que chaque fichier excel du dossier soit traités de la même manière, sans avoir à ouvrir les fichiers, lancer le script et sauvegarder tout ça manuellement, en raison du nombre.

Je me doutais que les lignes précisées étaient inutiles mais dans le doute j'ai préféré les ajouter.

Le traitement suivant lui est valide (toutes les conditions sont voulues et réfléchies), celui-ci est difficile à expliquer sans exemple, mais les documents traités sont propres et confidentiels à l'entreprise, toutes mes excuses.
Cependant, il faut bien comprendre qu'il fonctionne sur un document unique (récupération, ajout de page et traitement des informations de la page source, sur le fichier sur lequel le script est lancé). Il sera donc peut être nécessaire de changer certains chemins comme les ThisWorkbook etc..
C'est pour cela que j'ai essayé de rendre chaque workbook et worksheet actifs au moment du passage du script (pour simuler une activation manuelle).


a = Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B16")
j = 1
c = 1
For i = 15 To 1000
If Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i).Font.Bold Then
Application.ThisWorkbook.Worksheets("Results " & z).Range("A" & j) = a
Application.ThisWorkbook.Worksheets("Results " & z).Range("B" & j) = c
Application.ThisWorkbook.Worksheets("Results " & z).Range("C" & j) = Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i)
c = c + 1
j = j + 1
ElseIf Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i) = "" Then
Exit For
End If
Next
For i = 15 To 1000
If Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i).Font.Bold Then
b = Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i)
ElseIf Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i) <> "" Then
Application.ThisWorkbook.Worksheets("Results " & z).Range("A" & j) = a
Application.ThisWorkbook.Worksheets("Results " & z).Range("B" & j) = b
Application.ThisWorkbook.Worksheets("Results " & z).Range("C" & j) = Application.ThisWorkbook.Worksheets("VK_Preisliste").Range("B" & i)
j = j + 1
Else
Exit For
End If
Next
ActiveWorkbook.Worksheets("Results " & z).Activate
ActiveWindow.Zoom = 30
Worksheets("Results " & z).Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Columns.AutoFit
Worksheets("Results " & z).Range("A1:C500").Rows.AutoFit
Worksheets("Results " & z).Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Columns.AutoFit
Worksheets("Results " & z).Range("A1:C500").Rows.AutoFit
Worksheets("Results " & z).Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Columns.AutoFit
Worksheets("Results " & z).Range("A1:C500").Rows.AutoFit
Worksheets("Results " & z).Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Columns.AutoFit
Worksheets("Results " & z).Range("A1:C500").Rows.AutoFit
Worksheets("Results " & z).Range("A1:C500").Replace Chr(10), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(13), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(11), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(124), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Replace Chr(0), Chr(32)
Worksheets("Results " & z).Range("A1:C500").Columns.AutoFit
Worksheets("Results " & z).Range("A1:C500").Rows.AutoFit

Est-il possible d'obtenir les pages "Results [numéro]" sur un autre fichier à part (celui sur lequel le script est lancé de base par exemple ?)

,ou, sinon,

Est-il possible d'obtenir ces pages en tant que pages supplémentaires des fichiers effectivement traités (donc une page par fichier) ?

Merci d'avance,

Actuellement le programme commence bien par ouvrir le premier fichier du dossier, y créer la page Results 1 mais plante à la ligne 9, soit :


Application.ThisWorkbook.Worksheets("Results " & z).Range("A" & j) = a

L'indice n'appartient pas à la sélection.
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 174
Ce script est dans tous les fichiers Excel ?

Voilà ce que j'ai compris à la première lecture du 1er post:
J'ai un fichier Excel qui contient une macro qui met à jour des fichiers Excel contenus dans un répertoire.




«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
Messages postés
10
Date d'inscription
jeudi 3 juillet 2014
Statut
Membre
Dernière intervention
8 juillet 2014

Bonjour,
Je n'ai finalement pas réussi à appliquer le script à tous les fichiers d'un coup, j'ai donc eu à le faire manuellement, faute de temps.
Merci beaucoup pour votre aide, elle m'aura tout de même permis de comprendre certaines choses.
J'ai eu à faire d'autres scripts depuis, que j'ai, (cette fois ci!) réussi à faire tourner automatiquement, je crois que je commence à prendre le truc.
Cependant j'ai rencontré un tout autre problème avant ce week end, dans le dernier de mes scripts, le topic est nommé "Incompatibilité de type", je pense que ce n'est qu'un souci de formulation, mais après de nombreux tests je ne trouve toujours pas, votre aide m'y serait très appréciée.
Cdt,

Victor