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

ameur30 Messages postés 6 Statut Membre -  
Patrice33740 Messages postés 8400 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

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

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

    A quelle ligne est l'erreur ?
    0
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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