VBA : changer le format d'une cellule en conservant sa formule

Résolu/Fermé
Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 - 4 janv. 2016 à 17:51
Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 - 5 janv. 2016 à 14:38
Bonjour,

Je souhaite, par l'intermédiaire d'une macro codée en VBA, changer le format d'une cellule contenant une formule tout en conservant cette même formule de renseignée dans la cellule.

Pour vous donner un peu le contexte, je travaille avec deux fichiers :

- Un premier qui va regrouper une liste de travaux répartis sur différentes communes.
- Un second fichier, que j'ai créé moi-même et qui fonctionne en tandem avec le premier. Par une macro, il vient rechercher et centraliser les informations dont j'ai besoin selon ma convenance.

Mon problème porte sur une information que je dois récupérer en dehors de mon fichier de travaux :
Je dois identifier les communes sur lesquelles ont lieu les travaux et à l'origine je ne dispose que de codes INSEE (Format équivalent à un code postal, donc un nombre : exemple 61040).
Je dispose d'un fichier avec la liste de correspondance code INSEE-Nom de communes, donc pas de soucis. j'arrive à faire sans problème le lien avec des données fixées (des nombres, pas de formules) au moment où la macro se lance.

Toutefois, étant parfois amené à manipuler les travaux renseignés (et notamment à en supprimer), plutôt que d'entrer des informations fixes dans mes cellules, je préférerais y rentrer des formules excel.
C'est là que le problème se pose :

- Les différents codes INSEE, pour des histoires de tri, sont récupérés via une fonction INDEX() que ma macro renseigne dans une cellule.
Cells(1, 5).FormulaLocal = "=INDEX('Préparation retraits immos'!M8:M9;EQUIV(MAX('Préparation retraits immos'!N8:N9);'Préparation retraits immos'!N8:N9;0))"

- Ma macro vient ensuite inscrire dans la case d'à côté une fonction RECHERCHEV() pour aller chercher le nom de commune correspondant.
Cells(1, 6).FormulaLocal = "=RECHERCHEV(E1;" & ListeCommunes & ";2;FAUX)"

La variable ListeCommunes est en fait le chemin d'accès au fichier.

Et là, c'est le drame :
Tandis que sur mon fichier de travaux modifié le code INSEE est vraisemblablement considéré comme un texte, sur ma liste de correspondance, le code INSEE est considéré comme un nombre. Et vu que cette liste est utilisée ailleurs, pas question de toucher au format.
La fonction RECHERCHEV() renvoie #N/A à cause du format (j'insiste : si je réécris manuellement le code INSEE, là ça marche).
Si je rentre la ligne supplémentaire :
Cells(1,6).Value = CDbl(Cells(1,6).Value)

La fonction RECHERCHEV marche aussi, mais je perd également la formule dans a cellule F1, et ça n'est pas ce que je souhaite...

Je m'en remets donc à vous pour résoudre mon problème et vous remercie d'avance !

1 réponse

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
4 janv. 2016 à 23:22
Bonjour,

Regardes si en changeant ainsi ta formule cela ne fonctionne pas :

Cells(1, 6).FormulaLocal = "=RECHERCHEV(TEXTE(E1;"00000");" & ListeCommunes & ";2;FAUX)"
1
Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 181
Modifié par Arkana0 le 5/01/2016 à 14:41
Ça ne marche pas, mais ça m'a mis sur la piste de ma solution ! J'ai trouvé en fouillant un peu au hasard j'ai trouvé la fonction ENT() qui résoud mon problème !
0