VBA : changer le format d'une cellule en conservant sa formule
Résolu
Arkana0
Messages postés
6902
Statut
Modérateur
-
Arkana0 Messages postés 6902 Statut Modérateur -
Arkana0 Messages postés 6902 Statut Modérateur -
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.
- Ma macro vient ensuite inscrire dans la case d'à côté une fonction RECHERCHEV() pour aller chercher le nom de commune correspondant.
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 :
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 !
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 !
A voir également:
- VBA : changer le format d'une cellule en conservant sa formule
- Excel compter cellule couleur sans vba - Guide
- Dépassement de capacité vba ✓ - Forum Excel
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Vba range avec variable ✓ - Forum VB / VBA
1 réponse
Bonjour,
Regardes si en changeant ainsi ta formule cela ne fonctionne pas :
Regardes si en changeant ainsi ta formule cela ne fonctionne pas :
Cells(1, 6).FormulaLocal = "=RECHERCHEV(TEXTE(E1;"00000");" & ListeCommunes & ";2;FAUX)"
Arkana0
Messages postés
6902
Statut
Modérateur
182
Ç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 !