L'indice n'appartient pas à la sélection

Je me doute que ce n'est pas l'idéal de cette manière...

Je vous glisse ci-joint un fichier-type parmi les 61 (POP MOIS M-06.xlsx) avec le fichier contenant la Macro (MACRO.xlsm) :

6macro.xlsm (28.76 Ko)
5pop-mois-m-06.xlsx (27.66 Ko)

Bonjour,

Waouh... pas simple car il y a des erreurs dans certaines formules. Je suppose que les autres intervenants ont aussi vu cela

En prenant de base un seul code comme proposé par Pedro22, essayez ce code ci-dessous

Sub OuvrirFichiers()
Dim Fichier As String, Chemin As String, Wb As Workbook
Dim Plage As Range, Plage1 As Range, Plage2 As Range, Plage3 As Range
Dim cel As Range

With Application
    .ReferenceStyle = xlR1C1 'mise au style L1C1 du au ref des formules dans le fichier
    .ScreenUpdating = False
End With

Chemin = "M:\Administratif\Land\Exploitation_Generale\300-Centre Routier\12-PASQUIER Katia\9_POP\POP NEW"
Fichier = Dir(Chemin & "*.xlsx")
Do While Fichier <> ""
    Set Wb = Workbooks.Open(Chemin & Fichier)
    Application.Calculation = xlCalculationManual
    With Wb.Sheets("POP")

        Set Plage1 = .Range(.Cells(32, 5), .Cells(48, 30))
        Set Plage2 = .Range(.Cells(58, 5), .Cells(64, 30))
        Set Plage3 = .Range(.Cells(66, 5), .Cells(72, 30))
        Set Plage = Union(Plage1, Plage2, Plage3)

        For Each cel In Plage
            If cel <> "" Then
                cel.NumberFormat = "General"
                cel.TextToColumns Destination:=cel, DataType:=xlFixedWidth, _
            FieldInfo:=Array(0, 1), TrailingMinusNumbers:=True
            End If
            On Error Resume Next
            cel.FormulaLocal = cel.FormulaLocal
        Next cel
    End With
    Application.Calculation = xlCalculationAutomatic
    Wb.Close True 'Fermer et sauvegarder
    Fichier = Dir 'Passer au fichier suivant
Loop
With Application
    .ReferenceStyle = xlA1
    .ScreenUpdating = True
End With
End Sub

A noter que si vous avez 60 fichiers à faire d'un seul coup, vous aurez le temps d'aller boire un café avant que cela se termine.

Cordialement

Bonjour Dan,

Chapeau !

J'ai commencé à feuilleter tout ça hier, j'ai été perturbé par la présence de formules qui n'en étaient pas (comme si l'option "afficher les formules au lieu des résultats" était activée), d'où l'intérêt de la manip' que je ne comprenais pas hier sur les formules.

Tu as juste laissé un .ScreenUpdating = False à la fin au lieu de .ScreenUpdating = True, qui est d'ailleurs facultatif il me semble.

@Pedro22

J'ai commencé à feuilleter tout ça hier, j'ai été perturbé par la présence de formules qui n'en étaient pas (comme si l'option "afficher les formules au lieu des résultats" était activée), d'où l'intérêt de la manip' que je ne comprenais pas hier sur les formules.

Exact ! j'ai vraiment tourné en rond avec ce fichier car comme toi, j'ai aussi constaté le souci sur les formules. Je me suis tourné sur Données - Convertir mais là aussi manuellement cela fonctionnait parfois mais parfois pas avec le code si on utilisait une sélection de plusieurs cellules à la fois. Je me suis donc tourné vers une boucle sur chaque cellule

Merci pour la remarque du ScreenUpdating : je viens de corriger dans le post. Mais peut être que l'on peut s'en passer.

Je n'ai pas testé mais il faudrait peut être mettre le calcul en pose aussi pendant l'exécution.

Merci pour la remarque du ScreenUpdating : je viens de corriger dans le post. Mais peut être que l'on peut s'en passer.

De mémoire, la fin d'une marco correspond implicitement à un retour de l'affichage.

Je n'ai pas testé mais il faudrait peut être mettre le calcul en pose aussi pendant l'exécution.

Le soucis c'est qu'une fois les formules opérationnelles, il y avait dans la macro d'origine un copié-collé en valeurs il me semble. Si cette étape est toujours d'actualité, il faut au préalable évaluer les formules. Sinon tu devrais effectivement accélérer l'exécution en désactivant momentanément les calculs auto.

Bonjour à vous,

Merci pour le travail et le temps passés dessus. Mille mercis.

Je n'ai aucun message d'erreur... En revanche, rien ne semble s'ouvrir lorsque j'exécute la macro. Pourtant, le chemin est précisément celui qui mène vers les fichiers qui contiennent tous un onglet "POP". De même, aucun fichier n'est modifié suite à l'exécution. Les cellules restent inchangées.

Je ne comprends pas pourquoi il ne veut plus les ouvrir.

Concernant le temps de l'exécution, cela ne m'aurait pas étonné étant donné que la Macro prenait quelques minutes à tout effectuer avant aussi.

Je ne sais pas où est-ce que cela peut bloquer..

Je n'ai aucun message d'erreur... En revanche, rien ne semble s'ouvrir lorsque j'exécute la macro.

Bonjour,

Pour vous en assurez, faites une exécution pas à pas du code (touche F8). La mise en commentaire de .ScreenUpdating = False sera peut-être nécessaire avant de réaliser ce contrôle.

En revanche, rien ne semble s'ouvrir lorsque j'exécute la macro.

C'est normal avec le code.

1. Une alternative à ce que Pedro22 vous écrit est de désactiver cette ligne au début du code --> .screenupdating = false
Pour la désactiver, mettez simplement une apostrophe devant le point et relancer le code. Vous devriez voir le fichier s'ouvrir.

2. Ce que vous pouvez également faire en supplément, cliquez à un endroit de la ligne "set Wb = .....", ensuite appuyez sur la touche F9 de votre clavier (cette action va mettre un point d'arrêt à ce endroit. Ensuite exécutez le code et une fois sur le point d'arrêt appuyez sur F8 pour continuer. Vous devriez voir le fichier s'ouvrir également.

Remarque : je vois que vous avez une version Excel 2008 dans votre profil. Cette version n'existe que sous MAC... D'où la question... vous êtes sous windows ou sous MAC ?

Re,

Je suis sur Windows. J'ai actualisé mon profil, c'est Excel 2019, version 2008 (build 13127.21506 Office), mise à jour sortie le mois dernier, en avril.
___

1. J'ai désactivé la ligne " .screenupdating = false " avec l'apostrophe. Je relance le code et même après l'avoir réinitialisé aucun fichier ne s'ouvre.

2. J'ai également tenté en supplément la deuxième méthode, mais toujours rien, même en poursuivant avec F8 une fois sur le point d'arrêt.

image

Le fichier s'ouvre lors de votre essai ?
Sinon je suppose que pour votre test le bouton est bien associé au bon code.

Faites un test avec les deux fichiers que vous avez postés dans ce fil

- Mettez les deux fichiers sur votre bureau
- Coller le code proposé dans la fichier Macro.xlsm
- Associez le code au bouton sur votre feuil1 (attention de désactiver le code du même nom qui se trouve dans votre fichier car il porte le même nom que celui que j'ai posté)
- dans le code : remplacez Chemin ="M\Administratif...." par ceci --> Chemin = Thisworkbook.path & "\"
- exécutez le code depuis le bouton de votre feuil1

Le fichier ne s'est pas ouvert lors de l'essai.

Je viens de tester en mettant le fichier MACRO et un fichier-type, POP MOIS M-10, sur le bureau tout en collant le code proposé dans le fichier Macro et rien ne s'ouvre non plus. Les cellules restent inchangées.

J'ai même essayé en créant un tout nouveau fichier Macro pour être sûr qu'il n'y ait que cette macro dessus et aucun doublon.

J'ai tenté avec " '.ScreenUpdating = False " également, et toujours rien.

image image

Re tous,

la macro tente d'ouvrir les fichiers POP sur M:\Administratif\....

en mettant le fichier POP sur le bureau, il n'y a aucune chance de réussir à l'ouvrir ....

Bon courage

Edit: Bien vu le coup de l'image des icônes de classeurs !!

Je viens de tester en mettant le fichier MACRO et un fichier-type, POP MOIS M-10, sur le bureau tout en collant le code proposé dans le fichier Macro et rien ne s'ouvre non plus. Les cellules restent inchangées.

Ce n'est pas ce que je vous ai demandé. Le fichier que vous avez posté ici c'est le pop-mois-m-06
De plus avez-vous changé le chemin comme précisé ? Là dans la vue que vous postez ce n'est pas le cas

Vous devez avoir ceci dans votre macro

presse papier02

Bonsoir,

Peut-être hors sujet????

Je ne comprends pas cette partie :

Fichier = Dir(Chemin & "*.xlsx")
Do While Fichier <> ""
Set Wb = Workbooks.Open(Chemin & Fichier)

Sachant que le chemin est déjà précisé par la première ligne de cet exemple, pourquoi répéter "Chemin" dans l'instruction "Set..."?

Est-ce qu'ainsi, ça ne fonctionnerait pas? (non testé...)

Fichier = Dir(Chemin & "*.xlsx")
Do While Fichier <> ""
Set Wb = Workbooks.Open(Fichier)

Peut-être? (ou pas....)

Bonjour à tous,

@cousinhb29 : La fonction Dir renvoie le nom du fichier et non son chemin complet donc il faut bien répéter le répertoire ensuite pour que la méthode .open fonctionne.

@Drokarre : Pouvez-vous essayer avec :

Chemin = "M:\Administratif\Land\Exploitation_Generale\300-Centre Routier\12-PASQUIER Katia\9_POP\POP NEW\" '<<< manquait antislash

L'idéal serait d'exécuter la macro au pas à pas depuis le début de la macro pour voir ce qui se passe et si vous rentrez dans la boucle while.

Cdlt,

Bonjour,

@cousinhb29 : Si vous testez ce que vous écrivez, vous constaterez que cela plante.

@3GB : Le F8 a déjà été suggéré dans d'autres posts. Bien vu, pour le antislash ( \ ) dans la variable Chemin. Cet antislash n'était d'ailleurs pas présent dans le fichier Macro de Drokarre

Bonjour,

@Dan : Oui, j'ai posté avant de tout lire... J'ai insisté sur le pas à pas depuis le début car, sans l'antislash, Fichier valait "" et on ne rentrait jamais dans la boucle et donc on ne passait jamais par le point d'arrêt.

Bonjour à vous,

Dan, j'ai corrigé mon erreur dans la recopie et cette fois-ci cela a bel et bien marché. Excusez-moi pour l'oubli.

Le ficher POP MOIS M-06.xlsx s'est bien ouvert, la macro a modifié les plages de cellules puis l'a enregistré et fermé.

En revanche, je ne sais pas pourquoi certaines cellules y ont échappé. Notamment sur la ligne 64 + les Moyennes / Sierreur sur la colonne AA.

Correction sur la macro pour modifier le fichier directement sur le bureau :

Résultat :

image image

Les cellules vides ou avec les "######" dépendent des résultats de la ligne 64, d'où l'anomalie.

Bonjour

Merci d'éviter de reposter à chaque fois les images avec le code, cela alourdit le forum inutilement.

Effectivement j'ai également ce résultat. Cela vient du fait que les formules ne sont pas correctement écrites. regardez en ligne 64 par exemple, la formule se termine par "....L(11)C:L(" --> Il manque donc une partie.

Rechercher des sujets similaires à "indice appartient pas selection"