Collage spécial dans macro échoue. Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
f
fredo
Jeune membre
Jeune membre
Messages : 21
Inscrit le : 25 avril 2009
Version d'Excel : 2002 FR

Message par fredo » 16 février 2019, 21:45

Bonsoir à tous,

Je bataille sur une macro toute simple pourtant.

Je souhaite copier et coller les une à la suite des autres les données de la feuille 1 sur la feuille 2 en collage spécial "valeur" (car cellules issue d'un calcu)l.

Le problème est que je me heurte à cette erreur d'exécution 1004 : la méthode Pastespécial de la classe range a échoué.

Après recherche sur le web pour essayer de comprendre je n'arrive toujours pas à trouver la solution.

J'ai joint un fichier exemple.

Merci pour votre aide.
Collage spécial.xlsm
(16.6 Kio) Téléchargé 11 fois
Avatar du membre
LouReeD
Passionné d'Excel
Passionné d'Excel
Messages : 5'428
Appréciations reçues : 206
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Téléchargements : Mes applications
Contact :

Message par LouReeD » 16 février 2019, 22:07

Bonsoir,

voici un code qui fonctionne :
Sub LouReeD()
    Application.ScreenUpdating = False
    Sheets("Feuil1").Select
    Range("D4:D7").Copy
    Sheets("Feuil2").Select
    Range("A" & Sheets("feuil2").Cells(Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub
Mais regardez une chose : n'avez vous pas une valeur inscrite aux alentours de la ligne 1080 de la feuille 2 ?
Sinon votre recherche de dernière ligne, ne manquait-il pas le ".Row" ? à moins qu'il soit remplacé par le "(2)"...
Il existe une instruction pour "dé sélectionner" une plage copiée afin de retirer les pointillés clignotant sur la plage, dans ce code elle n'est pas mise... ;-)

@ bientôt

LouReeD
Quelques règles à lire ICI ;;)
_______________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
f
fredo
Jeune membre
Jeune membre
Messages : 21
Inscrit le : 25 avril 2009
Version d'Excel : 2002 FR

Message par fredo » 17 février 2019, 16:13

Bonjour LouReeD ,

J'ai regardé au niveau de la ligne 1080 je n'ai rien trouvé.

Pour la recherche de la dernière ligne j'ai fais plusieurs tentative avec different morceau de code glané au fil de mes recherches (un peu de bricolage a la macgyver) et ça a l'air de marcher.

Pour ce qui est de ta solution ca marche impec :bien: . Je vais me pencher sur ce code pour mieux le comprendre.

Pour ce qui est de l'instruction manquante pour deselectionner j'ai compléter ton code avec cette instruction et ça marche :

Application.CutCopyMode = False

Merci pour ton aide ça me permet maintenant d'avancer.

Bon dimanche à toi.
f
fredo
Jeune membre
Jeune membre
Messages : 21
Inscrit le : 25 avril 2009
Version d'Excel : 2002 FR

Message par fredo » 17 février 2019, 17:22

M****!!!J'ai oublier de préciser un paramètre :hi?!

La taille de ce que j'ai à copier est variable. Sur l'exemple du premier post le copier coller à la suite des données de la première feuille marche super mais uniquement si la plage a copier reste invariable, or elle l'est.

Je viens de nommer une plage pour prendre en compte la variabilité de ce que j'ai à copier.

Cela fonctionne (ça copie et colle les données les une a la suite des autres) mais uniquement quand ces données ne sont pas issue d'un calcul. Or les données de la plage variable que je souhaite copier sont toutes issues d'un calcul... Donc les lignes vides sur la feuille 2 sont considéré par la macro comme des données et colle les nouvelles données en laissant les lignes vides si les données issuées du collage précédent n'a pas rempli l'entièreté de la plage selectionnée.

Ca me rend chèvre le VBA **L

Help me please
f
fredo
Jeune membre
Jeune membre
Messages : 21
Inscrit le : 25 avril 2009
Version d'Excel : 2002 FR

Message par fredo » 17 février 2019, 17:46

Je pense avoir trouvé une solution mais il y a un hic...

J'utilise cette instruction à la place du "Range("D4:D7").Copy" pour trouver la dernière linge et la dernière colonne de ce que je souhaite copier :
Dim DerniereColonne As Integer Dim DerniereLigne As Integer DerniereColonne = Range("A1").SpecialCells(xlCellTypeLastCell).Column DerniereLigne = Range("A1").SpecialCells(xlCellTypeLastCell).Row Sheets("Feuil1").Range(Cells(1, 1), Cells(DerniereLigne, DerniereColonne)).Copy
Par contre je ne comprend pas pourquoi ma macro ne marche qu'une seule fois, je ne peux pas copier coller de nouvelles données dans la feuille 2...

Voici ce que j'obtiens (voir pièce jointe).
Collage spécial.xlsm
(16.88 Kio) Pas encore téléchargé
Avatar du membre
LouReeD
Passionné d'Excel
Passionné d'Excel
Messages : 5'428
Appréciations reçues : 206
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Téléchargements : Mes applications
Contact :

Message par LouReeD » 18 février 2019, 14:12

Bonjour,

Je suis sur tél, donc pas de visuel sur le fichier... Vous pouvez essayé de passer par SpecialCells qui permet de sélectionner certaines cellule en fonction du contenu... Sinon au moment du coller, faire une boucle sur les cellule copiée et ne coller que celles qui sont différentes de rien...

@ bientôt

LouReeD
Quelques règles à lire ICI ;;)
_______________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
f
fredo
Jeune membre
Jeune membre
Messages : 21
Inscrit le : 25 avril 2009
Version d'Excel : 2002 FR

Message par fredo » 18 février 2019, 19:35

Je suis en train d'étudié les boucles pour régler mon problème.
Je vais regarder ça ce soir. Je vous tiens au courant.
Avatar du membre
LouReeD
Passionné d'Excel
Passionné d'Excel
Messages : 5'428
Appréciations reçues : 206
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Téléchargements : Mes applications
Contact :

Message par LouReeD » 18 février 2019, 23:20

Bonsoir,

voici une solution en fichier joint :
Collage spécial V2.xlsm
(18.37 Kio) Téléchargé 6 fois
avec les commentaires.

@ bientôt

LouReeD
Quelques règles à lire ICI ;;)
_______________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
f
fredo
Jeune membre
Jeune membre
Messages : 21
Inscrit le : 25 avril 2009
Version d'Excel : 2002 FR

Message par fredo » 19 février 2019, 12:52

Merci LouReed je regarde ça ce soir à tête reposé.

A tout à l'heure.
f
fredo
Jeune membre
Jeune membre
Messages : 21
Inscrit le : 25 avril 2009
Version d'Excel : 2002 FR

Message par fredo » 19 février 2019, 20:06

Re,

J'ai bien regarder ta macro c'est nickel LouReed (et en plus j'ai les commentaires) !

Super sympa de ta part pour ton aide :sp:

Encore une fois merçi!
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message