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

Erreur 9 - indice n'appartient pas à la sélection

  • Initiateur de la discussion Initiateur de la discussion crajot
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

crajot

XLDnaute Nouveau
Bonjour
On m'a fourni un fichier excel qui est en fait un questionnaire d'évaluation. Ce fichier contient pas mal d'onglet et pour chaque partie du questionnaire il y a un onglet résultats. Il contient également une macro servant à mettre à jour ces résultats en fonction des réponses apportées.
Le hic c'est que ce fichier est en anglais. J'ai du enlever la macro pour faire traduire en français.

Voici un aperçu des onglets en anglais et en français:
EN=
FR =

J'ai copié-collé la macro de la version anglaise dans la version française et j'ai modifié comme suit :
Worksheets(SheetName & " Results").Rows("12:1000").Delete Shift:=xlUp en anglais qui devient
Worksheets(SheetName & " Résultats").Rows("12:1000").Delete Shift:=xlUp en français

J'ai changé "Results" pour "Résultats" partout où cela apparaissait dans la macro.

Le message d'erreur s'affiche précisément sur la ligne ci-dessus et je ne comprends pas pourquoi. N'y connaissant pas grand chose dans le language VBA, je sollicite votre aide !!

Merciiii !!🙂

Cécile

PS: je suis en Nouvelle-Calédonie et il y a en ce moment 10h en + de décalage avec la France donc ne vous inquiétez pas si je ne réponds pas immédiatement !

Ci-dessous la totalité de la macro en anglais :
Option Explicit

Sub CreateList(SheetName As String)

Dim x As Long

Dim xlcnn As ADODB.Connection
Set xlcnn = New ADODB.Connection
xlcnn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name & ";Extended Properties=""Excel 8.0;HDR=Yes""")

Dim xlcmd As ADODB.Command
Set xlcmd = New ADODB.Command
xlcmd.ActiveConnection = xlcnn

Dim xlrs As ADODB.Recordset
Set xlrs = New ADODB.Recordset

Worksheets(SheetName & " Results").Rows("12:1000").Delete Shift:=xlUp

xlcmd.CommandText = "SELECT F1, Null AS aaa, F9 FROM [" & SheetName & "$B10:J1000] WHERE F8 IN(1,2)"

xlrs.Open xlcmd, , adOpenDynamic

Worksheets(SheetName & " Results").Range("B12").CopyFromRecordset xlrs

Worksheets(SheetName & " Results").Select

For x = 12 To Worksheets(SheetName & " Results").Range("B65536").End(xlUp).Row
Worksheets(SheetName & " Results").Range("B" & x & "😀" & x).WrapText = True
Worksheets(SheetName & " Results").Range("B" & x & ":C" & x).Merge
Worksheets(SheetName & " Results").Rows(x & ":" & x).VerticalAlignment = xlTop
Worksheets(SheetName & " Results").Range("B" & x & ":C" & x).Select
Call HeightIssue
Next x

With Worksheets(SheetName & " Results").Range("B10😀" & Worksheets(SheetName & " Results").Range("B65536").End(xlUp).Row)
.Borders(xlEdgeLeft).Weight = xlMedium
.Borders(xlEdgeTop).Weight = xlMedium
.Borders(xlEdgeBottom).Weight = xlMedium
.Borders(xlEdgeRight).Weight = xlMedium
.Borders(xlInsideVertical).Weight = xlThin
.Borders(xlInsideHorizontal).Weight = xlThin
End With

xlrs.Close
Set xlrs = Nothing
Set xlcmd = Nothing
Set xlcnn = Nothing

End Sub

Sub LoopThroughSheets()

Application.ScreenUpdating = False

Dim xlsh As Excel.Worksheet

For Each xlsh In ActiveWorkbook.Worksheets

If Len(xlsh.Name) <= 6 And xlsh.Name <> "PDCA" And xlsh.Name <> "Sheet1" Then Call CreateList(xlsh.Name)

Next xlsh

Worksheets("Instructions").Select

Application.ScreenUpdating = True

MsgBox "Results Tabs Updated", vbOKOnly, "Results Tabs Updated"

End Sub
 

Pièces jointes

  • Capture 1.JPG
    14.7 KB · Affichages: 47
  • Capture 1.JPG
    14.7 KB · Affichages: 47
  • Capture 2.jpg
    6.8 KB · Affichages: 56
  • Capture 2.jpg
    6.8 KB · Affichages: 53
Re : Erreur 9 - indice n'appartient pas à la sélection

Bonjour Cécile et bienvenue à toi!

Répondre à ta question sans voir le fichier, ça va être compliqué: il y n'y a pas qu'une seule raison possible au message d'erreur qui s'affiche.
Une première procédure ("LoopThroughSheets") passe une variable ("SheetName") à ta procédure "CreateList", mais comment savoir ce que vaut cette variable, si nous ne savons pas quelles feuilles existent et comment elles sont nommées?
De ce que nous pouvons voir d'ici (mais c'est vrai que c'est loin! 😱), pour certaines feuilles de ton classeur tu devrais avoir leur "correspondante" avec le même nom, suivi d'une espace, puis du mot "résultat" ... est-ce bien le cas?
Avant que ne soit faite la traduction, la macro fonctionnait?
Si ton classeur contient vraiment beaucoup de feuilles, conserve celles qui sont utiles pour illustrer le problème. Leur contenu (à ce stade) n'a pas d'importance; elles peuvent même être vides (ce qui t'évitera de te demander si certaines données sont confidentielles!)
 
Re : Erreur 9 - indice n'appartient pas à la sélection

Bonjour

Merci bien pour votre réponse. Il se trouve qu'un de mes collègues a trouvé la solution ! Au final c'était tout bête. La rtaductrice n'avait pas remis tous les titres d'onglets à l'identique et cela empêchait la macro de tourner correctement. Une fois tout cela rétablit, je n'ai plus eu qu'à "Résultats" à la place de "Results" et la macro a fonctionné correctement !

Merci encore énormément pour votre temps !

Cécile
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
11
Affichages
785
Réponses
1
Affichages
1 K
Réponses
2
Affichages
1 K
Réponses
8
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…