Récupréation en vba de la valeur d'une cellule

Le
d.sundow
Bonjour,

Mon problème est le suivant :

Si

A1 contient la formule : =aujourdhui()*2
A2 contient la valeur : =A1/3
A3 contient la formule : =TRONQUE(A1+A2) (je visualise 105549)

Quelqu'un pourrait-il m'enseigner comment récupérer dans le presse
papier la valeur figurant en A3 ?

Un grand merci d'avance - cordialement - sundow
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Péhemme
Le #6607871
Bonjour,

Clique droit / copier...
Là tu as la formule en presse-papier, c'est à la recopie qu'il te faut faire
un collage spécial pour n'obtenir que la valeur (collage spécial / valeur /
ok).

Michel


news:
Bonjour,

Mon problème est le suivant :

Si

A1 contient la formule : =aujourdhui()*2
A2 contient la valeur : ¡/3
A3 contient la formule : =TRONQUE(A1+A2) (je visualise 105549)

Quelqu'un pourrait-il m'enseigner comment récupérer dans le presse
papier la valeur figurant en A3 ?

Un grand merci d'avance - cordialement - sundow
d.sundow
Le #6608511
Clique droit / copier...
Là tu as la formule en presse-papier, c'est à la recopie qu'il te faut faire
un collage spécial pour n'obtenir que la valeur (collage spécial / val eur /
ok).

Michel


Bonjour Michel,

Merci pour cette réponse.

La manipulation que tu proposes fait qu'au moment du collage, on
choisi l'option de ne coller que la valeur uniquement. Si l'on fait un
collage normal (ctrlV) p.ex. on colle alors la formule avec ses
références.

Il y a donc au niveau de ce qui est enregistré dans le presse-papier
une formule qui est retraitée de manière particulière au moment d'un
collage spécial/valeur.

Ma question est toutefois de savoir s'il y a un ordre vba (ou un bout
de code) qui permette de mémoriser au niveau du presse papier la
valeur d'une cellule, dont le résultat varie dans le temps, car elle
est issue d'une formule.

Pour test, il suffit après avoir executé la macro de cliquer sur une
cellule n'importe où, et de faire ctrlV sur le clavier :

- si ce qui est pasté est la formule et bien c'est qu'au niveau du
presse papier on a une référence "tradtionnelle"

- si ce qui est pasté est la valeur (en l'occurence 105549 aujourd'hui
et 105552 demain) et bien alors c'est que nous avons mémorisé dans le
presse papier la valeur; et c'est cela que je cherche.

Merci d'avance pour vos suggestions - sundow

Péhemme
Le #6609511
La manipulation que tu proposes fait qu'au moment du collage, on
choisi l'option de ne coller que la valeur uniquement. Si l'on fait un
collage normal (ctrlV) p.ex. on colle alors la formule avec ses
références.


==> Je ne propose rien, je décris simplement la manip telle qu'Excel la
reproduit.
Lors du collage spécial, tu as un grand nombre de choix : ouvre la boîte
(clique droit / collage spécial) pour t'en rendre compte.

Il y a donc au niveau de ce qui est enregistré dans le presse-papier
une formule qui est retraitée de manière particulière au moment d'un
collage spécial/valeur.


==> Oui.

Ma question est toutefois de savoir s'il y a un ordre vba (ou un bout
de code) qui permette de mémoriser au niveau du presse papier la
valeur d'une cellule, dont le résultat varie dans le temps, car elle
est issue d'une formule.


==> A ma connaissance : non. Mais quel est l'intérêt ?
In fine, que souhaites-tu obtenir ?
Le presse-papier n'est qu'une mémoire temporaire correspondant à une
opération particulière.
Si tu veux stocker cette information pour l'utiliser plus tard, tu peux la
mettre dans une variable voire dans une cellule (à ce stade tu peux fermer
avec sauvegarde ton fichier et tu conserves ton information pour un travail
ultérieur) et même, si le coeur t'en dit, dans la base de registre.

Amicalement
Michel

d.sundow
Le #6614991
Bonjour Michel,

Le presse-papier n'est qu'une mémoire temporaire correspondant à une
opération particulière.


Ah ? Je pensais que le presse papier est une mémoire temporaire dans
laquelle est stockée une information (formules, fichiers,...) et non
une opération (que je comprends, comme une suite d'ordres) ?

Quand les mémoires n'étaient pas celles qu'elles sont aujourd'hui, une
image trop lourde ne tenait pas dans le presse papier.

Je me demandais donc juste s'il y avait un ordre, ou une suite
d'ordres, permettant d'accéder au presse papier et permettant de
stocker dans cette mémoire non pas la formule avec ces référence
relatives mais la valeur de cette cellule à un moment donner.

Je reviendrai plus tard sur ce fil pour ce qui est du "In fine". Là je
dois zapper sur autre chose. Disons que le but n'est justement pas de
travailler avec une information stockée fixe, mais d'utiliser une
information temporaire à un moment donner et de s'économiser de devoir
travailler avec des variables et autres bases de registre qui sont,
soit dit en passant, des notions appartenant à des sphères d'une
galaxie bien éloignée de mes petites connaissances.

Merci en tout cas pour ta réponse détaillée. Je l'ai déjà lue
plusieurs fois, je la relirai encore - sundow

Péhemme
Le #6614981
Ce fut avec plaisir.
Michel

news:
Bonjour Michel,

Le presse-papier n'est qu'une mémoire temporaire correspondant à une
opération particulière.


Ah ? Je pensais que le presse papier est une mémoire temporaire dans
laquelle est stockée une information (formules, fichiers,...) et non
une opération (que je comprends, comme une suite d'ordres) ?

Quand les mémoires n'étaient pas celles qu'elles sont aujourd'hui, une
image trop lourde ne tenait pas dans le presse papier.

Je me demandais donc juste s'il y avait un ordre, ou une suite
d'ordres, permettant d'accéder au presse papier et permettant de
stocker dans cette mémoire non pas la formule avec ces référence
relatives mais la valeur de cette cellule à un moment donner.

Je reviendrai plus tard sur ce fil pour ce qui est du "In fine". Là je
dois zapper sur autre chose. Disons que le but n'est justement pas de
travailler avec une information stockée fixe, mais d'utiliser une
information temporaire à un moment donner et de s'économiser de devoir
travailler avec des variables et autres bases de registre qui sont,
soit dit en passant, des notions appartenant à des sphères d'une
galaxie bien éloignée de mes petites connaissances.

Merci en tout cas pour ta réponse détaillée. Je l'ai déjà lue
plusieurs fois, je la relirai encore - sundow

d.sundow
Le #6624831
Rebonjour Michel,

Ce fut avec plaisir.
Michel


Le gros avantage du plaisir sur les gâteaux c'est que quand il est
partgagé (ce qui est le cas) il y en a deux fois plus après qu'avant,
alors que les gâteaux il y en a deux fois moins. (Je crois que c'est
une sitation de Confucius ou Lao Tseu je ne sais plus... mais bon).

En fait je me bats avec mon enregistreur de macro.

Je souhaiterais par exemple nommer l'onglet actif avec la valeur se
trouvant en B2.

Voilà le code enregistré.

Range("B2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Feuill1").Select
Sheets("Feuill1").Name = "NouveauNom"
Range("B2").Select

Le problème est que le code en question n'est pas sensible à une
variation de la valeur contenue en B2.

J'ai essayé ça :

Range("B2").Select
Selection.Copy
ActiveSheet.Select
ActiveSheet.Name = ActiveSheet.Paste
Range("B2").Select

Ce qui ne doit pas être loin de la solution, mais mon onglet se nomme
"True". Je n'arrive pas à récupérer la valeur du presse-papier.

Si quelqu'un peut m'aider ça m'aidrait drôlement. Merci d'avance -
Sundow

Modeste
Le #6624771
Bonsour® avec ferveur ;o))) vous nous disiez :

Je souhaiterais par exemple nommer l'onglet actif avec la valeur se
trouvant en B2.

Si quelqu'un peut m'aider ça m'aidrait drôlement.


pourquoi passer par le presse-papier ????
Sub Macro1()
ActiveSheet.Name = [B2].Text
End Sub

!!! attention ne pas utiliser de caractères interdits : / : * ? [ ]

--
--
@+
;o)))

d.sundow
Le #6625221
Bonjour Modeste,

pourquoi passer par le presse-papier ????


Binf... je me disais que comme il contenait justement l'information
dont j'avais besoin... un petit copié/collé de derrière les fagots ç a
avait une chance de marcher.

Mais c'est vrai que comme ça :

Sub Macro1()
ActiveSheet.Name = [B2].Text
End Sub


c'est drôlement mieux !

Merci beaucoup Modeste - sundow

Publicité
Poster une réponse
Anonyme