Dupliquer une ligne sans utiliser le presse papier

Signaler
-
 philippe151286 -
Bonjour,

Je travail actuellement macro Excel. Ma macro est fonctionnelle mais certaine lignes sont verrouillées / déverrouillés et implémentées dynamiquement suivant une ligne référence.

Ma solution actuelle est simple:

FeuilACTIONS.Rows(X).Select
FeuilACTIONS.Rows(Y).Insert Shift:=xlDown
Application.CutCopyMode = False


Cette solution ne me conviens pas car elle écrase le presse papier ce qui n'est pas pratique pour l'utilisateur. De plus utiliser le presse papier vas à l'encontre des "bon usages".

Ma ligne contient en ensemble de formules et une mise en forme complexe.

J'ai testé beaucoup de choses mais rien de satisfaisant, je fais donc appel à vos lumière afin d'obtenir de nouvelles pistes.

9 réponses


Pour compléter ce que j'ai précédemment écris je veux également éviter la fonction Select.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour,*
Désolé, mais j'attendrai pour te répondre que cette discussion, ouverte indûment dans le bar (!) soit déplacée là où elle aurait dû l'être (Langages dérivés > VBA).
Vraiment désolé, mais c'est ainsi (en espérant que mon attitude parviendra enfin à mettre un terme à ces légèretés gênantes).
Je me contente dans ces conditions de t'inviter à ouvrir ton aide VBA sur le mot Copy et d'y lire la rubrique Range.copy. Ta solution y est !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.

Merci pour cette première réponse. Désolé de ne pas avoir ouvert ce sujet au bon endroit mais on me proposait tellement de sous catégorie que je ne savais pas ou poster.

Pour la solution que tu m'a indiqué j'ai trouvé ceci:

Cette méthode copie la plage vers la plage spécifiée ou dans le Presse-papiers.

Worksheets("Sheet1").Range("A1:D4").Copy _
    destination:=Worksheets("Sheet2").Range("E5")


Il semblerais qu'en effet le presse papier ne soit pas utiliser si la destination n'est pas accessible. Je vais donc tester cela.

Merci
Philippe

[b]J'imagine avoir raté quelque chose j'ai remplacé mes 3 ligne par:
FeuilACTIONS.Rows(X).Copy _
    Destination:=FeuilACTIONS.Rows(Y)


La copie se fait bien mais à l'issue de cette ligne mon presse papier est vide alors que j'avais pris la précaution de le remplir juste avant. Je ne comprend pas d'après la description de l'aide sa aurais due fonctionner.
/b
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
OK Tu peux toujours mettre en variable le contenu du presse-papier puis réalimenter ce dernier.

Maintenant, si seule la valeur est à copier ailleurs (sans les mises en forme), rien ne t'empêche de le faire ainsi : genre (exemple):
Worksheets("desti").Range("C3").value = Worksheets("source").Range("B1").value


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.

J'ai effectivement vite pensé à cela:

Worksheets("desti").Range("C3").value = Worksheets("source").Range("B1").value


J'ai meme fait
Worksheets("desti").Range("C3").Formula= Worksheets("source").Range("B1").Formula
...

Je ne suis cependant pas parvenu à copier toute mes propriétés de mise en forme. et les formules ne s'incrémentes pas.

J'avais également songé à sauvegarder le presse papier mais on m'a demandé d'eviter.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Il n'y a aucune autre solution, dans ce cas.
Le plus bel excel du monde ne peut donner que ce qu'il a .


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Sauf, bien entendu à appliquer range... = range ... à toutes les propriétés ,une par une (chaque attribut de mise en forme, etc...). Mais alors : Bonjour les lourdeurs !
La solution la moins lourde est alors sans aucun doute celle du rétablissement du contenu de presse-papier !
Mais :
on m'a demandé d'eviter

donne à penser qu'on t'impose-là un exercice (et ce serait alors celui de mon "sauf à ..." et ce sera toi seul qui devra alors le faire, cet exercice imposé )
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.

On converge donc vers ce que je craignais.
Le problème de la recopie individuelle des propriétés est la recopie exacte. Cette recopie ne tient évidement pas compte de l'indentation des lignes(d'ou l’intérêt du insert).
Il fraudais donc que je génère individuellement les propriétés de chaque cellules. De plus (formules,mise en forme conditionnelles...)