[VBA] Erreur 1004

Bonjour,

Lorsque j'applique le code d'un bouton, une erreur aparraît.

Voilà le code :

Sheets("Database").Select
Range("A5:A45").Select
Selection.Copy
Sheets("Table").Select
Range("A3").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=False

Où est l'erreur ?
Comment faire pour copier/coller les valeurs d'un tableau dans un autre onglet ?

9 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    tu as choisis coller/spécial mais tu n'a rien définis
    utilise ces deux lignes

    ....
    Range("A3").Select
    ActiveSheet.Paste

    ....
    A+
    1. Non, ça ne vient de là, il me dit "Select method of range class failed". J'en déduis qu'il n'aime pas que je change d'onglet pour onglet pour coller le truc, ma question est : pourquoi ? Et comment faire pour qu'il le veuille ?

      (je précise que les cases à copier comportent des formules, peut-être que ça vient de là ?)
      1. est-ce que ta feuille ne serais pas protégée?

        pour t'aider à avancer.

        refais juste un bout de code avec l'enregistreur
        et regarde si tu as l'erreur et ce qui a changé.

        A+
        1. Ca me donne exactement le même code, donc le problème ne vient pas de là.
          Peut-être une question de boutons de contrôle/formulaire ? (j'y connais rien... :s)
          1. Dans ce nouveau classeur je suppose que ton code fonctionne.
            et que la methode copier / coller de vba ne pose pas d'erreur.
            Est-ce vrai?

            "Select method of range class failed"
            cette erreur se produit quand on veut copier une plage de cellule et la mettre dans une plage trop petite

            c'est pourquoi je disais utilise activesheet.paste qui prend la première cellule comme point de départ
            et ainsi pas de risque de débordement.

            J'espère que tu vas trouver parce que sans avoir soi-même l'erreur c'est difficile.
            A+
            1. Oui c'est ce que je pensais, mais le copier/coller est dans un onglet vide, donc pas de problèmes de place en théories... Et le activesheet.paste ne résoud rien.
              Je comprends vraiment pas pourquoi il me dit qu'il manque de place alors qu'il a toute la place qu'il lui faut !

              En tout cas merci pour ton aide ;)
              1. Salut,

                Tu as pu résoudre ton pb ?
                J'ai exactement le même problème sur lequel je me casse la tête depuis le début de l'après-midi !

                Merci
                1. Bonjour,

                  Non je n'ai pas réussi à résoudre le problème, j'ai utilisé un autre bouton (formulaire) à la place.
                  Apparemment les boutons de contrôle ne permettent pas le changement d'onglet, donc obligé d'utiliser deux boutons différents !

                  Bonne chance.
                  1. J'ai eu exactement le même problème que TEEZ et j'ai trouvé un moyen de le contourner en faisant appel à une fonction.

                    Au lieu de lier la macro de tri directement au bouton j'ai créé une fonction "tri" et la sub reliée au bouton fait appel à cette fonction et comme ça ça marche bien

                    Exemple:

                    Public Function tri(sheet_name As String, nb_lines As Long)

                    Dim maplage As Range

                    Set maplage = ActiveWorkbook.Worksheets(sheet_name).Range(ActiveWorkbook.Worksheets(sheet_name).Cells(1, 1), ActiveWorkbook.Worksheets(sheet_name).Cells(nb_lines, 32))

                    ActiveWorkbook.Worksheets(sheet_name).Select
                    maplage.Sort Key1:=Range("L1"), Order1:=xlDescending, Header:=xlGuess, _
                    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

                    End Function

                    Sub sort_sheet1()
                    Call tri(Sheet1, 25)
                    End Sub