XL 2016 Changer les formules d'un classeur

  • Initiateur de la discussion Initiateur de la discussion FabFlam
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

FabFlam

Guest
Bonjour,

J'ai un classeur avec des tas de cellules qui contiennent =RECHERCHEV(nom; plage; ncol; 0)
Ca marche bien, sauf que lorsque la cellule source est vide, la cellule qui contient la formule affiche 0 et ça ne me va pas.
Je voudrais donc remplacer ces formules par =SI(ESTVIDE(RECHERCHEV(nom; plage; ncol; 0));"";RECHERCHEV(nom; plage; ncol;0))

Sauf que j'ai des milliers de cellules et que plage et ncol changent tout le temps alors je ne veux pas faire ça à la main. J'ai cherché à utiliser rechercher/remplacer mais je n'y arrive pas.

Une idée ? Avec une macro en VBA peut-être ? J'ai essayé mais je ne vois pas comment m'y prendre.

Merci de votre aide,
FabFlam
 
Désolée JHA mais ça ne répond pas à ma question.
Si il y a un 0 dans la cellule source je veux le garder. Mais si la cellule source est vide, je ne veux pas de 0 à la place de rien.
Merci
 
Dernière modification par un modérateur:
Bonjour J'ai pondu le code VBA suivant mais il me manque quelque chose, ça ne marche pas ..
VB:
Sub MacroTest()
Dim oldformule As String
Dim newformule As String
Dim tmp
Dim i
Dim j
i = 1
j = 1
While j <= 4
While i <= 10
Cells(i, j).Activate
' Recherche de la fonction RECHERCHEV dans la formule de la cellule active
If InStr(ActiveCell.FormulaLocal, "RECHERCHEV") Then
' Stocker l'ancienne formule de la cellule dans oldformule
oldformule = "" & ActiveCell.FormulaLocal
' Enlever le signe = pour pouvoir réutiliser la chaîne de caractères sans ce signe
tmp = Split(oldformule, "=")
' Concatener pour stocker dans newformule la chaîne de caractères correspondant à la formule souhaitée
newformule = "=SI(ESTVIDE(" & tmp(1) & ");"""";" & tmp(1) & "))"
' Vérifier que la chaîne de caractère est correcte
MsgBox newformule
' Mettre la nouvelle chîne de caractère dans la cellule active en tant que nouvelle formule
' C'EST LA QUE JE COINCE !! Ca ne marche pas
ActiveCell = newformule
End If
oldformule = ""
newformule = ""
i = i + 1
Wend
i = 1
j = j + 1
Wend
End Sub
J'ai ajouté un petit fichier de test de ce code tout va bien sauf l'affectation de la nouvelle formule à la cellule active, j'obtiens erreur 1004

Merci de votre aide,
FabFlam
 

Pièces jointes

Dernière modification par un modérateur:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
9
Affichages
478
Réponses
1
Affichages
333
Réponses
8
Affichages
530
Retour