Erreur d'exec '9' l'indice n'appartient pas à la sélection

Bonjour,

j'ai un soucis avec la macro ci-dessous que j'ai voulu réutiliser pour un autre fichier; macro qui crée autant de feuille que de valeur dans le fichier de base et qui copie les informations correspondantes dans la feuille ainsi créée.

cette macro fonctionne dans un de mes fichiers mais me renvoie le message "Erreur d'exécution '9' l'indice n'appartient pas à la sélection" avec ce nouveau fichier. je ne comprends pas d'où peut venir le bug. j'ai mentionné "=====>" sur la ligne de la macro qui bugue.

Merci pour votre aide......

Sub generation()

'Exportation avec suppression

Dim i&, X&, F As Worksheet

'Bloquer l'affichage écran

'Application.ScreenUpdating = False

'Bloquer les alertes

'Application.DisplayAlerts = False

'Avec la Feuille 1 (Nom a adapter)

With Sheets("PREP")

'/!\ *** Suppression de toutes les feuilles*** /!\

'Pour chaque feuille du classeur

For Each F In Worksheets

'Si le nom de la feuille n'est pas Feuil1, on la supprime

If F.Name <> .Name Then F.Delete

'Prochaine feuille

Next F

'/!\ ***************************************** /!\

'Pour chaque ligne (i) de feuil1

For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row

'Si il y a une erreur on passe à ligne suivante

On Error Resume Next

'On dit que F est la feuille du nom de la cellule

'ligne i colonne 13 (M)

'Si la feuille n'existe pas il y a une erreur gérée par "On Error Resume Next"

Set F = Sheets(.Cells(i, 13).Value)

'si il y a une erreur on l'annule

On Error GoTo 0

'Si F n'est rien (donc si la feuille n'éxiste pas

If F Is Nothing Then

'on la crée en lui donnant comme nom la valeur de la cellule

'ligne i colonne 13 (M)

Sheets.Add(After:=Sheets(Sheets.Count)).Name = .Cells(i, 13)

'Comme on crée la feuille on met l'en-tête des colonnes

'de A1 à M1

ActiveSheet.Range("A1:M1").Value = .Range("A1:M1").Value

'Fin de la condition

End If

'On cherche la première ligne vide de la bonne feuille (X)

====> X = Sheets(.Cells(i, 13).Value).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row

'on met les valeurs des cellules de A à M de la feuille Feuil1

'de la ligne i dans les cellules de A à M de la ligne X de la bonne feuille

Sheets(.Cells(i, 13).Value).Range("A" & X & ":M" & X).Value = .Range("A" & i & ":M" & i).Value

'On dit que F n'est rien (préparation de la prochaine boucle)

Set F = Nothing

'Prochaine ligne de la feuille feuil1

Next i

'*** Mise en forme de toutes les feuilles (facultatif)***

'Pour chaque feuille du classeur

For Each F In Worksheets

'Si le nom de la feuille n'est pas Feuil1, on ajuste les colonnes

If F.Name <> .Name Then F.Columns.AutoFit

'Prochaine feuille

Next F

'********************************************************

'On active la feuille Feuil1 pour finir dessus

.Activate

'Arret de l'utilisation de la feuil1

End With

'Réactivation des alertes

Application.DisplayAlerts = True

'Réactivation de l'écran

Application.ScreenUpdating = True

'Message de fin de traitement

MsgBox "Exportation terminée", 64, "Compte-rendu"

End Sub

Bonjour

Après test pas d'erreur

Il faut ton fichier avec l'erreur pour essayer de trouver ce qui cloche

Bonjour,

As-tu regardé la valeur de .Cells(i, 13).Value) lors du plantage ?

A+

Re

Voici le fichier incriminé

A tester

A+

merci Frangy,

çà marche juste en ajoutant cette fonction CStr ??

A quoi sert-elle ?

Le nom d'une feuille est une valeur de type String (Texte).

Les valeurs de la colonne M étant numériques, il faut les convertir en type String, d'où l'utilisation de la fonction CStr.

A+

un grand merci au novice que je suis.

Rechercher des sujets similaires à "erreur exec indice appartient pas selection"