Erreur execution 9: l'indice n'appartient pas à la sélection

SOS_27 -  
 Utilisateur anonyme -
Bonjour,
J'ai crée ce code à macro pour réarranger certaines colonnes d'un dans un ordre différent de l'autre. Le code fonctionne sur mon ordinateur mais une fois que J,essaye de l'ouvrir sur un autre qui a la même version d'excel (via mail), ce message d'erreur apparaît :
erreur exécution 9: l'indice n'appartient pas à la sélection

Voici mon code:

Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("A2:A70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("A2:A70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("B2:B70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("G2:G70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("C2:C70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("C2:C70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("D2:D70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("D2:D70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("E2:E70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("E2:E70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("F2:F70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("F2:F70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("G2:G70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("O2:O70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("H2:H70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("T2:T70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("I2:I70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("H2:H70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("J2:J70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("N2:N70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("K2:K70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("S2:S70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("L2:L70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("Y2:Y70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("M2:M70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("W2:W70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("N2:N70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("Z2:Z70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("O2:O70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("I2:I70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("P2:P70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("K2:K70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("Q2:Q70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("U2:U70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("R2:R70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("V2:V70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("S2:S70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("AB2:AB70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("U2:U70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("AD2:AD70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("V2:V70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("AF2:AF70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("W2:W70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("AG2:AG70").Value
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("AA2:AA70").Value = Workbooks("HM-Shell Tracking Sheet 2016 Perso").Sheets("En cours").Range("AK2:AK70").Value

Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("A2:AA70").Font.Name = "Tahoma"
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("I2:AA70").Font.Bold = False
Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("A2:A70").Font.Bold = False


Merci !


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.


1 réponse

Utilisateur anonyme
 
Bonjour SOS_27,

Pour ta dernière ligne de code :

Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("A2:A70").Font.Bold = False

Je pense que tu as dû oublier un « A » :

Workbooks("HM-Shell Tracking Sheet 2016 Reporting").Sheets("En cours").Range("A2:AA70").Font.Bold = False

La fin de mon code VBA en tient compte ; je te laisse essayer ce code VBA :


' ATTENTION : pour lancer cette macro, places-toi d'abord sur le classeur
' "HM-Shell Tracking Sheet 2016 Reporting" et sur la feuille "En cours" ;
' bien sûr, le second classeur "HM-Shell Tracking Sheet 2016 Perso" doit
' avoir été ouvert (chargé en RAM).

Sub Essai()

  Application.ScreenUpdating = False

  ' Si tu n'es pas sûr(e) d'être toujours sur la feuille "En cours" avant lancement
  ' de cette macro, remplace la ligne ci-dessus par celle-ci :

  ' Worksheets("En cours").Select: Application.ScreenUpdating = False

  With Workbooks("HM-Shell Tracking Sheet 2016 Perso").Worksheets("En cours")
  
    .[A2:A70].Copy: [A2].PasteSpecial -4163: .[G2:G70].Copy: [B2].PasteSpecial -4163
    
    .[C2:C70].Copy: [C2].PasteSpecial -4163: .[D2:D70].Copy: [D2].PasteSpecial -4163
    .[E2:E70].Copy: [E2].PasteSpecial -4163: .[F2:F70].Copy: [F2].PasteSpecial -4163
    
    ' Si tu es sûr(e) que les données de tes colonnes C à F ne changeront pas d'emplacement
    ' (pas d'insertion ou de suppression de colonnes qui modifie leur actuel emplacement),
    ' tu peux remplacer les 2 lignes ci-dessus par cette ligne unique :
    
    ' .[C2:F70].Copy: [C2].PasteSpecial -4163
    
    .[O2:O70].Copy: [G2].PasteSpecial -4163: .[T2:T70].Copy: [H2].PasteSpecial -4163
    .[H2:H70].Copy: [I2].PasteSpecial -4163: .[N2:N70].Copy: [J2].PasteSpecial -4163
    .[S2:S70].Copy: [K2].PasteSpecial -4163: .[Y2:Y70].Copy: [L2].PasteSpecial -4163
    .[W2:W70].Copy: [M2].PasteSpecial -4163: .[Z2:Z70].Copy: [N2].PasteSpecial -4163
    .[I2:I70].Copy: [O2].PasteSpecial -4163: .[K2:K70].Copy: [P2].PasteSpecial -4163
    .[U2:U70].Copy: [Q2].PasteSpecial -4163: .[V2:V70].Copy: [R2].PasteSpecial -4163
    .[AB2:AB70].Copy: [S2].PasteSpecial -4163: .[AD2:AD70].Copy: [U2].PasteSpecial -4163
    .[AF2:AF70].Copy: [V2].PasteSpecial -4163: .[AG2:AG70].Copy: [W2].PasteSpecial -4163
    .[AK2:AK70].Copy: [AA2].PasteSpecial -4163
  
  End With

  With [A2:AA70]: .Font.Name = "Tahoma": .Font.Bold = False: End With
  [I2:AA70].Font.Bold = False

End Sub


Dis-moi ce que tu en penses, et si ça te convient.

Si ton problème est réglé, merci d'aller en haut de page
pour cliquer sur « Marquer comme résolu ».

Cordialement.  😊
 
1
SOS_27
 
Merci pour la rapidité de la réponse.

Ma macros précédente était implémentée dans le fichier perso (source).
Il en va de même pour la tienne ou je dois implémenter celle la dans le fichier reporting (copie) ou encore cela n'a pas d’importance (désolé si c'est une question stupide mais mon expérience de programmation est en C++ et je viens seulement de me mettre aux macros).

Merci !
0
Utilisateur anonyme > SOS_27
 
 
Bonsoir SOS_27,

Non, ta question n'est pas stupide, et tu as tout à fait le droit de
demander des informations complémentaires.

Par « fichier perso », je pense que tu veux parler du classeur de
macros personnelles : « PERSO.XLS » ou « PERSONAL.XLSB »
(selon la version d'Excel).

Or mon code VBA est plutôt à placer dans un module
(par exemple « Module1 ») du classeur de destination :

"HM-Shell Tracking Sheet 2016 Reporting"

J'espère qu'il marchera du premier coup et te donnera les résultats
que tu attends ; comme mon code modifie uniquement le classeur
destination, fais avant une copie de ce dernier, par précaution.

Cordialement.  😊
 
0
SOS_27 > Utilisateur anonyme
 
Bonjour albkan,

Le programme marche parfaitement sur mon ordinateur. Cependant, une fois que je l'envoi par email et essaye de l'ouvrir sur un autre ordinateur, le même message d'erreur apaprait. de plus, la ligne With Workbooks("HM-Shell Tracking Sheet 2016 Perso").Worksheets("En cours") est surlignée en jaune.

Du coup le problème vient il du fait que le fichier ou la page ne sont pas reconnus par le programme sur le nouvel ordinateur ?

Cordialement.
0
Utilisateur anonyme > SOS_27
 
 
Bonjour SOS_27,

Je suis ravi que mon programme marche parfaitement sur ton ordinateur,
car ça confirme que j'avais bien mis toutes les nombreuses références !

Si ce même programme ne marche plus sur le PC de ton destinataire,
et qu'en plus la ligne surlignée en jaune est :

With Workbooks("HM-Shell Tracking Sheet 2016 Perso").Worksheets("En cours")

ça doit être parce que ton destinataire n'a pas respecté le préalable requis :

----------------------------------------------------------

1) Charger le classeur "HM-Shell Tracking Sheet 2016 Perso".
    Mais s'il ne l'a pas, il faut bien sûr que tu le lui envoies aussi !

    Si ton destinataire renomme la feuille "En cours" en "ABC" (par exemple),
    il doit mettre :
    With Workbooks("HM-Shell Tracking Sheet 2016 Perso").Worksheets("ABC")

    Si en plus ton destinataire renomme ce classeur avec 2017 au lieu de 2016
    (par exemple), il doit mettre :
    With Workbooks("HM-Shell Tracking Sheet 2017 Perso").Worksheets("ABC")

----------------------------------------------------------

2) Charger le classeur "HM-Shell Tracking Sheet 2016 Reporting".

----------------------------------------------------------

3) Sur ce classeur, aller sur la feuille "En cours" : impératif !
    SAUF si tu as remplacé la ligne #9 : Application.ScreenUpdating = False
    par la ligne #15 :
    Worksheets("En cours").Select: Application.ScreenUpdating = False

----------------------------------------------------------

4) Lancer la macro Essai() ; tu peux la renommer comme tu veux.

----------------------------------------------------------

5) Si le téléchargement d'un fichier a renommé son nom, par exemple
    en ajoutant devant une série de chiffres, il faut bien sûr que ton
    destinataire le renomme afin de lui redonner le même nom que
    celui d'origine ! Il doit donc avoir ces 2 classeurs :
    "HM-Shell Tracking Sheet 2016 Perso.xlsm"
    "HM-Shell Tracking Sheet 2016 Reporting.xlsm"

    Avec Excel 2003 : *.xls au lieu de *.xlsm

----------------------------------------------------------

Ces indications devraient suffire pour résoudre le problème.

À te lire pour savoir si tu as réussi, et si oui :
a) Dis-moi ce qui n'allait pas, et comment tu as résolu le problème.
b) Si c'est fini, merci de passer le sujet en résolu.

Si tu as autre chose à me demander, dis-moi ta version d'Excel.

A+  😊
 
0