IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

erreur execution 1004 sur methode paste [XL-2002]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut erreur execution 1004 sur methode paste
    je suis sous excel v2002 (10.6850)
    j'ai l'erreur suivante "erreur excecution 1004 la methode paste de la classe worksheet a échoué"

    l'execution s'arrete sur la ligne activesheet.paste en fin de procedure
    voici la procedure en question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
     
    Private Sub recopieprono() 'recopie les pronos selctionner de la feuille liste dans la feuiile synthese
    Dim choixprono As String
    Dim II As Long 'index fauille liste
    Dim ii1 As Long, colnbchxprono As Long, colnbchxpronodebut As Long, colnbchxpronofin As Long
    Dim i2 As Long
    colnbchxprono = 0
    colnbchxpronodebut = 0
    colnbchxpronofin = 0
    'selection du nb de chx à prendre et de la position de depart dans la selection des chx dans le pronostique
    II = 5 'index de 1er position pour lire les pronods choisis dans la feuil liste
    'lire les pronos selectionner dans la feuille liste
    Do While Sheets("liste").Range("C" & II).Value <> ""
             choixprono = Sheets("liste").Range("C" & II).Value
             colnbchxpronodebut = TextBox25.Value + 6 '1+6position du premier cheval a partir de laquelle les chx seront retenus
             colnbchxprono = TextBox24.Value 'nb de chx a lire dans le porosnostique
             colnbchxpronofin = colnbchxpronodebut + colnbchxprono - 1 ''
             If colnbchxpronofin > 22 Then colnbchxpronofin = 22
     
             ii1 = 2 ' debut ligne 2 ,lit les feuille pronoxxx en focntion des choix des noms des pronos
             Do While Sheets(choixprono).Range("G" & ii1).Value <> "" 'tantque la premeire colo de la feuille pronoxxxn'est pas vide
                     If Sheets(choixprono).Range("a" & ii1).Value = indexcourse Then
                        'Sheets(choixprono).Range("g" & i1 & ":V" & i1).Copy 'copie le prono dans la plage G à v en fonction de la ligne I1
                     With Sheets(choixprono) 'selctionne les chevaux dans la feuille du prono choisi.
                         .Range(.Cells(ii1, colnbchxpronodebut), .Cells(ii1, colnbchxpronofin)).Copy 'copy les chevaux des pronos choisis
                     End With
                     End If
          ii1 = ii1 + 1
    Loop
    '(recpie les chx des prono choisi dans la feuille synthese
      i2 = 6 'index 1er ligne de la feuille synthese
       Sheets("synthese").Select
         Do While Sheets("synthese").Range("b" & i2).Value <> ""
         i2 = i2 + 1
         Loop
         Sheets("synthese").Range("b" & i2).Select
         ActiveSheet.Paste '**** le curseur s'arrete la*****
         Sheets("synthese").Activate
     
     II = II + 1
    Loop

    je comprends plus rien

    pour info dans la feuille liste j'ai bien le nom des prono(onglet feuille) qui s'ecrit bien

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 106
    Par défaut
    Salut
    Normale, les données a coller ne sont pas de type sheet mais range, il faut faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("synthese").Range("b" & i2).Paste
    Pour le reste du code évites les select, a moins que tu veuilles afficher une feuille particuliere au vue de l'utilisateur.
    Ici par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       Sheets("synthese").Select
         Do While Sheets("synthese").Range("b" & i2).Value <> ""
         i2 = i2 + 1
         Loop
         Sheets("synthese").Range("b" & i2).Select
         ActiveSheet.Paste '**** le curseur s'arrete la*****
         Sheets("synthese").Activate
    La 1er ligne ne sert a rien puisque tu precise dans toutes les lignes qui suivent l'onglet sur lequel tu travailles(ce qu'il faut faire)
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Si je peu me permetre mon petit grain de sel...
    Qwazerty :
    La 1er ligne ne sert a rien puisque tu precise dans toutes les lignes qui suivent l'onglet sur lequel tu travailles(ce qu'il faut faire)
    Ce n'est pas tout à fait vrai, si ce n'est pas la feuille "synthese" qui est active, ce qui est le cas dans la configuration de la macros, la 1ère ligne est obligatoire.
    Il n'est pas possible de sélectionner directement une cellule dans une feuille qui n'est pas active (mais ont peu la modifier), pour tester..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'Génère une erreur
    Sub ChangeFaux()
        Sheets("feuil1").Range("b2").Select
        Sheets("feuil2").Range("b2").Select
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'Obligé de paser par un premier select.
    Sub ChangeBon()
        Sheets("feuil1").Range("b2").Select
        Sheets("feuil2").Select
        Range("b2").Select
    End Sub
    oscar.cesar : concernant ton erreur sur Paste, contrôle que tu passe bien par la ligne...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range(.Cells(ii1, colnbchxpronodebut), .Cells(ii1, colnbchxpronofin)).Copy
    Si le presse-papier est vide va probablement créer une erreur.
    par contre, ces lignes ne sont pas nécessaire...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    colnbchxprono = 0
    colnbchxpronodebut = 0
    colnbchxpronofin = 0
    Ne savent pas êtres autrement que 0 puisque tu les dimentionne sur la ligne supérieure.

    A+

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 106
    Par défaut
    Salut
    Ok c'est noté Leforestier, mais dans le morceau de code donnée, le select sur le range ne sert a rien non plus
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut
    bonjour à tous
    merci de votre aide



    oscar.cesar : concernant ton erreur sur Paste, contrôle que tu passe bien par la ligne...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range(.Cells(ii1, colnbchxpronodebut), .Cells(ii1, colnbchxpronofin)).Copy
    on passe bien.
    Si le presse-papier est vide va probablement créer une erreur.

    par contre, ces lignes ne sont pas nécessaire...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    colnbchxprono = 0
    colnbchxpronodebut = 0
    colnbchxpronofin = 0
    Ne savent pas êtres autrement que 0 puisque tu les dimentionne sur la ligne supérieure.
    Et oui il est vide je regarde ca

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut
    bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
     
     
     
    .Range(.Cells(ii1, colnbchxpronodebut), .Cells(ii1, colnbchxpronofin)).Copy
     
    on passe bien.
    Si le presse-papier est vide va probablement créer une erreur.
    le presse papier est effectivement vide donc erreur ??????

    mais je m'explique toujours pas pourquoi?



    Par contre peut on optimise ce code en supprimant le passage par la feuille liste
    cette feuille me permet de stocker uniquement ce que je selectionne dans combobox1
    via le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub ComboBox1_click() 'choix des nom des pronostique
     
    Dim ichoixprono As Long
     
    'Copie la liste des prono selectionner par le combox et les copie dans la feuille liste
      Sheets("liste").Range("c" & lig).Value = UserForm1.ComboBox1.List(ComboBox1.ListIndex)
      lig = lig + 1
      'affiche le contenu des prono selectionner dans le textbox
      If UserForm1.TextBox1.Text <> "" Then UserForm1.TextBox1.Text = UserForm1.TextBox1.Text & Chr(13)
      UserForm1.TextBox1.Text = UserForm1.TextBox1 & ComboBox1.Text
     
    UserForm1.ComboBox1.Value = "" 'initialisation permet de ^rendre la premiere ligne du combobox
    End Sub

    un coup de main serait le bien bienvenu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] VBA - IF ISNA - Erreur Execution 1004
    Par guilld dans le forum Excel
    Réponses: 3
    Dernier message: 06/05/2014, 17h23
  2. Erreur 1004 : la methode Paste de la classe Worksheet a échoué
    Par jambonland dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/08/2013, 10h29
  3. [XL-2007] Erreur 1004 : la methode Paste de la classe Worksheet a échoué
    Par bricko dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/06/2013, 01h53
  4. [XL-2007] erreur objet - 1004 sur un petit bout de code
    Par kl1ft dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 08/08/2011, 14h41
  5. [VBA-E] erreur d'execution '1004' sur masquage feuille
    Par Cupoftea dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2007, 18h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo