Remplacer une plage de formule par leur valeur

barbenault

XLDnaute Nouveau
Bonjour,

Je pensais que je pourrais facilement trouver la solution par moi-même, il faut croire que mes limites sont atteintes rapidement. Mon code génère une formule sur une plage en colonne BC, cette plage n'est pas fixe et la dernière ligne peut varier (dernière ligne non vide). Je souhaiterais que la plage en question soit remplacée par les résultats (valeurs données par les formules).

Je me suis dit, c'est tout simple, il me suffit de faire un copier de la plage (BC:BC) et un coller spécial (valeur) sur cette même plage. Le problème, c'est que la valeur renvoyée est celle de la cellule BC1, comme si le code copiait la première valeur de la plage et la copiait sur l'ensemble des cellules.

Pourriez vous m'éclairer sur ce problème?

Voici mon code

Code:
Columns("BC:BC").Select
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 

barbenault

XLDnaute Nouveau
Re : Remplacer une plage de formule par leur valeur

Bonjour à tous les deux,
Non justement ca ne fonctionne pas, et je ne comprends pas pourquoi, cela doit venir de ma formule, la voici :

=TEXTE(C2,"mm")& "/" &ANNEE(C2)
Elle s'applique sur un champ date et donne un résultat de type "01/02015", or lorsque j'applique vos propositions dans mon code la valeur renvoyée est "JAN-15" sur l'ensemble de ma plage alors que la formule renvoie du "01/2015" et du "02/2015".

Je suis un peu désespéré car ma formule fonctionne bien, mais je souhaite avoir les valeurs car j'échange ce fichier avec des utilisateurs dont les paramètres régionaux changent... Je peux vous envoyer le fichier si mon explication ne suffit pas.
 

NezQuiCoule

XLDnaute Occasionnel
Re : Remplacer une plage de formule par leur valeur

Re,
Bonjour Pierrot !

Pierrot93 à dit:
Re,

temps d'exécution plus long si l'on traite la colonne entière...

En théorie c'est tout à fait vrai :) Mais cela me met le doute, car la méthode Range.Value inclut déjà le .End(xlUp) lorsqu'on utilise des lignes ou des colonnes, et donc cela reviendrait exactement au même.

Dans tous les cas les cellules vides mettent un millième de seconde à se copier.. Donc c'était juste histoire de papoter et d'apporter mon grain de sel ;)

barbenault, as-tu essayé de changer le format de ta cellule en "Standard" ou même "Texte" ?
 

barbenault

XLDnaute Nouveau
Re : Remplacer une plage de formule par leur valeur

Juste avant de vous proposer le fichier, je vous explique le besoin :
Mon SI génère des écritures comptables sous format xls. Je souhaite répartir mes dépenses selon la période d'engagement, le champ date est malheureusement générée dans un format "texte". De cette date (type 01/01/2015), je cherche à obtenir le résultat suivant 01/2015, d'où la formule proposée ci-avant. Le problème de cette formule qui fonctionne très bien, c'est qu'elle réagit aux paramètres régionaux windows... et si j'envoie ce fichier aux US, le champ date (qui est en texte) ne va pas changer, tandis que ma formule va s'adapter et renvoyer une erreur de valeur. La formule s'attend à voir un champ date de type MM/JJ/AA et il trouve JJ/MM/AA.
En attendant que mon prestataire SI génére des champs date qui soient des champs date, je voudrais copier les valeurs (cela peut être du texte d'ailleurs, dès lors aque j'obtiens bien MM/AAAA) de cette formule. De cette manière, je controurne le problème des paramètres régionaux des dates. Je prépare un fichier et vous l'envoie.
Merci encore de vous pencher sur mon cas.
 

barbenault

XLDnaute Nouveau
Re : Remplacer une plage de formule par leur valeur

Re,

As tu testé le code proposé post #7

Oui, j'ai testé, le résultat est ""(vide), donc cela ne fonctionne pas. En pj, j'ai mis un fichier test, et là le résultat est différent selon que je me place en config EUR ou US (paramètres régionaux). J'obtiens "JAN-15" pour US et Janv-15 pour EUR, mais cela ne convient pas.
 

Pièces jointes

  • Test.xlsm
    87.8 KB · Affichages: 37
  • Test.xlsm
    87.8 KB · Affichages: 44
  • Test.xlsm
    87.8 KB · Affichages: 55

barbenault

XLDnaute Nouveau
Re : Remplacer une plage de formule par leur valeur

En fait, peut-être que je m'y prends mal, le besoin de départ, c'est :

- une extraction avec des dates en formats "texte" générée depuis des ordinateurs avec des configurations régionales différentes. Une formule qui permet d'extraire de cette date le mois auquel se référe la dépense pour ensuite répartir des dépenses pas mois dans un tableau.

Il faut donc qu'à partir d'une date j'obtienne l'info sur le mois de référence:

- 01/02/2015 ou 02/01/15 => Février 2015
- 12/02/2015 ou 02/12/15 => Février 2015
- 04/03/2015 ou 03/04/15 => Mars 2015
...
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 502
dernier inscrit
talebafia