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

ameur30 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   -
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
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