Copier coller sans passer par presse papier / format de données équivalent à une

Signaler
Messages postés
16
Date d'inscription
jeudi 30 décembre 2010
Statut
Membre
Dernière intervention
1 septembre 2012
-
Messages postés
30
Date d'inscription
mercredi 23 mai 2012
Statut
Membre
Dernière intervention
13 août 2012
-
Bonjour,

Je suis à la recherche d'un bout de code qui permettrait de mettre en mémoire une cellule et de la recopier autre part sans passer par le presse papier.

Existe-il un type de données qui reprend le format, la valeur (etc) d'une cellule ?
Comment affecter cette données à une cellule ?

J'ai bien essayé :
Set r = Feuil2.Range("A1")
Feuil1.Range("A5") = r
(r étant une variable Variant)
mais ça ne copie que la valeur...

JE SAIS qu'en passant par le presse papier c'est possible mais, dans mon application, j'ai besoin de copier des données venant de plusieurs feuilles pour les mettre dans une même feuille, et le copier/coller, c'est un peut long.

qq aurait-il une idée ?
Merci d'avance

4 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Bonjour,
utilisation de la méthode copy, avec argument destination ! A voir dans ton aide VBA (Range Copy). Vient de surcroît accompagnée d'un exemple trrès clair.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
16
Date d'inscription
jeudi 30 décembre 2010
Statut
Membre
Dernière intervention
1 septembre 2012

Avant de poster ce message je me suis dis, je ne vais pas mettre pour quelle utilisation j'ai besoin de mettre une cellule dans une variable car je suis sûr qu'il y a en un qui va me sortir "
utilisation de la méthode copy


Pourtant il me semble bien avoir poser comme question :
Existe-il un type de données qui reprend le format, la valeur (etc) d'une cellule ?
Comment affecter cette données à une cellule ?


ucfoutu : si tu l'aide, avec de surcroît son exemple très clair, tu verras qu'il est marqué qu'on ne peut pas copier des cellules de feuilles différentes en un seul coup : il faut copier feuille par feuille : ce que je veux éviter !

Je suis en train d'optimiser un moteur de recherche "à la google", dans excel pour une base de donnée, où la vitesse d'exécution est primordiale. La méthode copy est assez longue, comparé à une affectation de valeur : je cherche à optimiser.

PS : les application.screenupdating, calculation=xlManuel je connais
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Ah oui ?
Bien ! optimise donc, optimise ...
Tu es incompréhensible.
Pour tàon info :
la méthode que je t'ai indiquée :
reprend le format, la valeur (etc) d'une cellule

très exactement !
Montre donc ton code !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
30
Date d'inscription
mercredi 23 mai 2012
Statut
Membre
Dernière intervention
13 août 2012

Bonjour tu dois pouvoir stocker le format dans une chaine String

Par exemple
    For rw = nbrw To 9 Step -1
     If (Range(Cells(rw, 2).Address(RowAbsolute:=False, ColumnAbsolute:=False)).Style <> "Satisfaisant") And (Range(Cells(rw, 2).Address(RowAbsolute:=False, ColumnAbsolute:=False)).Style <> "Neutre") Then
      Range(Cells(rw, 2).Address(RowAbsolute:=False, ColumnAbsolute:=False)).EntireRow.Delete
     End If
    Next rw


Ma coloration conditionnelle doit être stocker comme String,on compare 2 chaines caractère

Du coup stocker la valeur dans un objet,le format dans un autre

Dim rformat As String
Set r = Feuil1.Range("A1")
rformat = Feuil1.Range("A1").NumberFormat
Feuil1.Range("A5") = r
Feuil1.Range("A5").NumberFormat = rformat


Et effectivement les 2 cellules sont bien au même format