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

[Fermé]
Signaler
Messages postés
2
Date d'inscription
lundi 6 mars 2017
Statut
Membre
Dernière intervention
7 juin 2018
-
Messages postés
8539
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
20 juillet 2021
-
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

Messages postés
16045
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 octobre 2021
1 551
Bonjour,

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

A quelle ligne est l'erreur ?
Messages postés
8539
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
20 juillet 2021
1 704
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