L'indice n'appartient pas à la sélection

Fermé
ameur30 Messages postés 1 Date d'inscription lundi 6 mars 2017 Statut Membre Dernière intervention 7 juin 2018 - Modifié par ameur30 le 6/03/2017 à 15:08
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 6 mars 2017 à 22:44
Bonjour,

j'ai un petit souci avec une macro qui doit copier des données d'un fichier page sur une autre page dans la meme ficher
Sub ameur()
Dim LR As Long, LR2 As Long, ws As Worksheet, ws2 As Worksheet
Set ws = Sheets("calcule")
Set ws2 = Sheets("Feuil2")
LR = ws.Range("a" & Rows.Count).End(xlUp).Row
LR2 = ws2.Range("a" & Rows.Count).End(xlUp).Row
If ws.Range("a4").Value = "" Then
MsgBox " Le transfert de données a été réalisée ", vbOKOnly, "Observation"
Else
ws.Range("a4:aj" & LR).Copy ws2.Range("a" & LR2 + 1)
ws2.Select
End If
End Sub

2 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
6 mars 2017 à 15:06
Bonjour,

Votre code marche chez moi, les lettres colonnes en majuscules c'est preferable

A quelle ligne est l'erreur ?
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
6 mars 2017 à 22:44
Bonjour,

Tout d'abord, même si ce n'est pas probablement pas la cause de cette erreur, il faut être cohérent dans le code, une Sheet et une Worksheet c'est pas la même chose :
Au lieu de :
Dim LR As Long, LR2 As Long, ws As Worksheet, ws2 As Worksheet
Set ws = Sheets("calcule")
Set ws2 = Sheets("Feuil2") 
Il faut écrire :
Dim LR As Long, LR2 As Long, ws As Worksheet, ws2 As Worksheet
Set ws = Worksheets("calcule")
Set ws2 = Worksheets("Feuil2")

Cette erreur survient lorsque la feuille n'existe pas, vérifie que le nom que tu utilises dans le code correspond bien au nom inscrit sur l'onglet de la feuille.
Et si tu ne veux pas avoir de problème avec le type de feuille et le nom des feuilles, utilises le CodeName par exemple :
Sub ameur()
Dim LR As Long, LR2 As Long
  LR = Feuil1.Range("a" & Rows.Count).End(xlUp).Row
  LR2 = Feuil2.Range("a" & Rows.Count).End(xlUp).Row
  If Feuil1.Range("a4").Value = "" Then
    MsgBox " Le transfert a été réalisée ", vbOKOnly, "Observation"
  Else
    Feuil1.Range("a4:aj" & LR).Copy Feuil2.Range("a" & LR2 + 1)
    Feuil2.Select
  End If
End Sub
0