Dupliquer une ligne sans utiliser le presse papier

philippe151286 - 30 avril 2013 à 11:43
 philippe151286 - 30 avril 2013 à 13:30
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

philippe151286
30 avril 2013 à 11:52
Pour compléter ce que j'ai précédemment écris je veux également éviter la fonction Select.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 avril 2013 à 12:02
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.
0
philippe151286
30 avril 2013 à 12:13
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
0
philippe151286
30 avril 2013 à 12:28
[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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 avril 2013 à 12:36
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.
0
philippe151286
30 avril 2013 à 12:46
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 avril 2013 à 12:48
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 avril 2013 à 12:56
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.
0
philippe151286
30 avril 2013 à 13:30
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...)
0
Rejoignez-nous