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

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= Capture 2.jpg
FR =Capture 1.JPG

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 & ":D" & 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:D" & 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
    Capture 1.JPG
    14.7 KB · Affichages: 43
  • Capture 1.JPG
    Capture 1.JPG
    14.7 KB · Affichages: 44
  • Capture 2.jpg
    Capture 2.jpg
    6.8 KB · Affichages: 51
  • Capture 2.jpg
    Capture 2.jpg
    6.8 KB · Affichages: 51

Modeste

XLDnaute Barbatruc
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! :eek:), 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!)
 

crajot

XLDnaute Nouveau
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
 

Discussions similaires

Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 501
dernier inscrit
talebafia