XL 2016 Changer les formules d'un classeur

FabFlam

XLDnaute Nouveau
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
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

Tu peux également sélectionner ta colonne et mettre un format de cellule "Standard;;" (Accueil/Nombre/format cellule/personnalisée)
Les 2 points virgules en bout du format de cellule vont masquer les zéros.

JHA
 

FabFlam

XLDnaute Nouveau
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

  • Classeur1.xlsm
    15.7 KB · Affichages: 3
Dernière édition:

Discussions similaires

Réponses
1
Affichages
113
Réponses
30
Affichages
1 K

Statistiques des forums

Discussions
312 088
Messages
2 085 201
Membres
102 816
dernier inscrit
bolivier