Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Message erreur '9' 'L'indice n'appartient pas à la sélection'

edelweiss95

XLDnaute Nouveau
Bonjour, je suis nouvelle sur le site.
J'ai un problème au débogage de la macro.
Je veux, dans le classeur "FAIT_Synthèse.xlsm" coller, l'une en dessous de l'autre, les données issues de tous les fichiers placés dans le répertoire D:\Faits. Le nombre de fichiers est variable.
Ils contiennent tous le même type de tableau, avec un contenu différent, et le nombre de ligne total est différent à chaque fois.
Lors du debugage, cela bloque à la ligne Workbooks("FAIT_Synthèse.xlsm").Activate, alors que les données ont été copiées.
Merci à vous.
Je viens de m'en rendre compte
-------
Option Explicit

'Déclaration variables

Dim NomClasseur As String
Dim LigneTotal As Integer
Dim DerLigne As Integer


'Procédure permettant la consolidation de plusieurs classeurs


Sub CombinerClasseurs()

'Etape n° 1 : Création des entites


'On réinitialise le fichier synthsee
Columns("A:AC").Clear
Range("A1").Value = "D"
Range("B1").Value = "H"
Range("C1").Value = "Du"
Range("D1").Value = "Ty"
Range("E1").Value = "Co"
Range("F1").Value = "Op"
Range("G1").Value = "Vo"
Range("H1").Value = "Vo"
Range("I1").Value = "Nu"
Range("J1").Value = "I"
Range("K1").Value = "Id"
Range("L1").Value = "SIM"
Range("M1").Value = "R"
Range("N1").Value = "N"
Range("O1").Value = "P"
Range("P1").Value = "N"
Range("Q1").Value = "I"
Range("R1").Value = "I"
Range("S1").Value = "S"
Range("T1").Value = "An"
Range("U1").Value = "R"
Range("V1").Value = "A"
Range("W1").Value = "Co"
Range("X1").Value = "Vi"
Range("Y1").Value = "Co"
Range("Z1").Value = "X"
Range("AA1").Value = "Y"
Range("AB1").Value = "A"
Range("AC1").Value = "Do"

'Etape n°2 : Parcourir tous les fichiers du répertoire prédéfini

ChDir "D:\Faits"


'On cherche le premier classeur dans le classeur
NomClasseur = Dir("D:\Faits\*.xlsx")

'On boucle pour chercher tous les classeurs excel
While Len(NomClasseur) > 0
'Application.DisplayAlerts = False 'Désactive les boîtes de dialogue

Workbooks.Open NomClasseur 'ouverture du classeur

LigneTotal = ActiveSheet.UsedRange.Rows.Count 'On récupère le nombre de données

Range("A2:AB" & LigneTotal).Copy 'On copie toute la plage de données active lignes*colonnes sans la ligne d'entitée


Workbooks("FAIT_Synthèse.xlsm").Activate CA BLOQUE ICI
'on revient sur le classeur de synthèse

DerLigne = ActiveSheet.UsedRange.Rows.Count + 1
'On recherche la dernire ligne du précédent enregistrement pour coller après. Sélection des données entrées pour se mettre à +1

Range("A" & DerLigne).Select 'Sélection des données entrées pour se mettre +1

ActiveSheet.Paste 'Je colle les données de mon classeur
Range("AC" & DerLigne & ":AC" & ActiveSheet.UsedRange.Rows.Count) = NomClasseur
'On met dans la colonne AC le nom du fichier pris en compte
Workbooks(NomClasseur).Close 'Fermeture du classeur ouvert
NomClasseur = Dir 'on passe au classeur suivant pour la boucle
Wend

End Sub
 
Dernière édition:

Discussions similaires

Réponses
4
Affichages
450
Réponses
9
Affichages
342
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…