Macro qui ne fonctionne pas sur un autre PC

Bonjour,

J'ai créé une macro qui me permet de compiler des données de plusieurs fichiers excel en 1 seul :

- J'ai X fichiers qui représentent chacun 1 mois, et contenant chacun un nombre assez conséquent de lignes et colonnes, avec des données concernant plusieurs villes

- J'ai 1 fichier maître dans lequel j'ai un 1er onglet avec la liste des villes, 1 case avec menu déroulant permettant de choisir la ville de son choix, et 1 bouton qui lance ma macro pour compiler les données de tous les autres fichiers concernant cette ville, et mettre le tout dans un 2nd onglet

Tous ces fichiers sont dans un même répertoire.

L'idée générale du fonctionnement de la macro quand on la lance :

- ouvrir 1 des fichiers mensuels du répertoire

- appliquer un filtre pour ne garder que les lignes qui concernent la ville choisie

- supprimer les colonnes de données qui ne m'intéressent pas

- coller le tout dans le 2e onglet du fichier maître

- fermer le fichier mensuel et recommencer avec le fichier mensuel suivant pour coller les données à la suite, en boucle jusqu'à avoir passé en revue tous les fichiers.

J'ai bien galéré mais j'ai réussi à obtenir quelque chose qui fonctionne bien (en m'inspirant d'autres sujets de ce forum d'ailleurs !)

Sur mon PC tout roule à merveille, le seule hic, c'est qu'en copiant tout le répertoire avec le fichier maître et les fichiers mensuels sur un autre PC, ça ne fonctionne pas. Pas de message d'erreur, il ne se passe juste "rien" (j'ai bien fait attention à autoriser l'exécution des macros). J'ai fait le test sur plusieurs autres pc avec excel 2007 comme moi, mais aussi 2019.

Pourtant j'ai bien veillé dans mon code à ne pas mettre d'adresse absolue (enfin il me semble...) notamment je n'indique pas de chemin pour le répertoire mais je lui dis de chercher dans le répertoire dans lequel le fichier se trouve.

Je ne comprends pas...

Voyez vous dans le code ci-dessous quelque chose qui pourrait bloquer en allant d'un PC à l'autre ?

Merci d'avance pour votre aide !!

Sub Compilmétéo()
Set maitre = ActiveWorkbook
  maitre.Sheets("Compil").[A2:I65000].Clear
    'définit la variable station choisie
  Set wb = ActiveWorkbook.Sheets("Choix_station")
Station = wb.Cells(3, 1).Value
 '*
  Repertoire = ThisWorkbook.Path
  nf = Dir(Repertoire & "\*.xls")  ' premier fichier
  Do While nf <> ""
    If nf <> ThisWorkbook.Name Then
      Workbooks.Open Filename:=Repertoire & "\" & nf
       'filtrer station
       ActiveSheet.Range("A:I").AutoFilter Field:=1, Criteria1:=Station
       'supprimer les colonnes superflues
       Columns("C:E").Select
  Selection.Delete Shift:=xlToLeft
   Columns("F:K").Select
  Selection.Delete Shift:=xlToLeft
Columns("G:G").Select
   Selection.Delete Shift:=xlToLeft
  Columns("H:J").Select
  Selection.Delete Shift:=xlToLeft
    Columns("I:Y").Select
    Selection.Delete Shift:=xlToLeft
    Columns("J:AC").Select
    Selection.Delete Shift:=xlToLeft
   'copier les cellules
      Range("A2", [A65000].End(xlUp)).Resize(, 12).Copy _
         maitre.Sheets("Compil").[A65000].End(xlUp).Offset(1, 0)
      ActiveWorkbook.Close False
    End If
    nf = Dir ' fichier suivant
  Loop
Range("B1").Select
    ActiveWorkbook.Worksheets("Compil").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Compil").Sort.SortFields.Add Key:=Range("B1"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Compil").Sort
        .SetRange Range("A2:I65000")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub

bonjour,

une possibilité est que cette instruction te renvoie "", car le répertoire ne contient aucun fichier avec une extension .xls

nf = Dir(Repertoire & "\*.xls")  ' premier fichier

pour vérifier l'hypothèse

nf = Dir(Repertoire & "\*.xls")  ' premier fichier
msgbox nf

Bonjour,

Merci pour cette piste.

Ce qui est bizarre, c'est que tant le fichier de compilation que les fichiers mensuels, sont exactement les mêmes sur les différents PC (j'ai copié tout le répertoire avec l'ensemble des fichiers à l'intérieur). On a donc les mêmes fichiers présents dans tous les cas.

J'ai tout de même ajouté ta ligne de code pour voir. Sur mon pc la msgbox affiche le nom du fichier mensuel qu'il ouvre, en revanche sur un autre PC, la msgbox est vide.

Et là gros flash : dans mon dossier ce ne sont pas des xls que j'ai mais des xlsx. En corrigeant mon code avec xlsx, ça fonctionne désormais sur les autres PC !

Bon je ne comprends pas pourquoi sur mon PC il ne fait pas la différence entre xls et xlsx et qu'il trouve les fichiers, alors qu'ailleurs ça bloque ! Mais ça marche...

Merci !!

re-bonjour,

si tu veux à la fois les xls et les xlsx

nf = Dir(Repertoire & "\*.xls*")  ' premier fichier

Bonjour,

Encore mieux comme ça, au moins plus de débat sur le format !

Merci h2so4 !

Je serais tout de même bien curieux de comprendre pourquoi sur certains pc il arrive à aller chercher des xlsx alors que la macro demandait des xls, et pas sur d'autres pc...!

bonjour,

Je serais tout de même bien curieux de comprendre pourquoi sur certains pc il arrive à aller chercher des xlsx alors que la macro demandait des xls, et pas sur d'autres pc...!

as-tu bien vérifié que c'était le cas ? Parce que si c'est avéré, je n'ai pas d'explication.

as-tu bien vérifié que c'était le cas ?

Je n'ai rien changé d'autre dans le code que ce que tu m'as indiqué.

Avant de faire les changements, la macro marchait très bien sur mon pc et celui d'un collègue, mais pas sur d'autres.

Et pourtant de base j'avais bien le code ci-dessous et des fichiers xlsx dans le répertoire !

nf = Dir(Repertoire & "\*.xls") 

Ca me titille toujours de pas comprendre mais le principal c'est que ça marche !

Encore merci.

re-bonjour,

Et pourtant de base j'avais bien le code ci-dessous et des fichiers xlsx dans le répertoire !

que des fichiers .xlsx ou un mix de fichiers .xlsx et .xls ?

peux-tu ressayer sur ton PC (celui où le code fonctionne avec .xls) en vérifiant que tu n'as que des fichiers .xlsx ?

re,

Oui je n'ai que des xslx (sauf le fichier maître qui porte la macro de compilation en xslm), et ça marche chez moi...!

capture
Rechercher des sujets similaires à "macro qui fonctionne pas"