Remplacer une formule dans une cellule par une macro VBA

Bonjour,

Je travail sur un fichier qui me permet de répertorier des pannes de matériel et la fréquence à laquelle elle revienne.

Suite à l'aide de ce forum j'ai déja pas mal progressé et je vous en remercie encore .

Cependant j'ai de nouveau un petit problème.

Dans le fichier que j'utilise j'ai certaine pannes qui reviennent très régulièrement j'ai donc automatisé mon fichier un maximum pour que certaines partie de texte complète directement des parties de mon tableau.

Exemple: LOC.DISPLAY AC010 remplit directement les cases Zone, Date, Compte, Importance, Solutioned by et Resolve status alors qu'autre chose comme multidrop ne complète que la date et le compte (car beaucoup moin fréquent) mais prend quand meme #N/A dans la case Zone.

Fichiers:

4test.xlsm (32.63 Ko)

Mon soucis est qu'en réalité j'utilise une formule dans la case Zone "=IFERROR(IF(B1>0,VLOOKUP(MID(B1,LEN(B1)-7,5)," donc quand elle ne contient pas au moin un des éléments de la feuille 2 la case m'affiche #N/A.

Ce que j'aimerais faire, à la place de mettre une formule dans la case Zone et la dupliquer sur toute la colone, c'est d'utiliser le VBA afin de remplir la case si elle contient une des données de la feuille 2 ou de laisser vide si ce n'est pas le cas. (J'ai fais pareil pour la case Importance{=IF(COUNTIF(B3,"*LOC.DISPLAY*"),"LOW","")} ).

J'èspere être compréhensible.

Je vous remercie déja pour votre lecture et l'aide que vous m'apporterez dans la mesure du possible

Bonjour,

A tester avec les formules dans le gestionnaire de noms

16test-2.xlsm (30.21 Ko)

Bonjour,

Pas sûr d'avoir bien compris la demande !

Une fonction perso (à adapter si besoin) :

Function Zone(Plage As Range, Texte As String) As String

    Dim Cel As Range

    Set Cel = Plage.Find(Texte, , xlValues, xlWhole)

    If Not Cel Is Nothing Then Zone = Cel.Offset(, 1).Value Else Zone = ""

End Function

à utiliser de cette façon en cellule C2 et à tirer vers le bas :

=SI(B2>0;SI(zone(LOCATION!B:B;STXT(B2;NBCAR(B2)-7;5))="";zone(LOCATION!B:B;STXT(B2;NBCAR(B2)-4;5));zone(LOCATION!B:B;STXT(B2;NBCAR(B2)-7;5)));"")

Bonjour,

A tester avec les formules dans le gestionnaire de noms

Test (2).xlsm

Merci M12 ça semble fonctionner, tu as rajouter

If Target.Value <> "" Then Target.Offset(, 1).Value = ["=Zone"]

et

If Target.Value <> "" Then Target.Offset(, 4).Value = ["=Importance"]

Il reste cepandant quelque chose que je ne comprend pas...

Dans ce que tu as rajouté comment dans importance, il s'ajoute LOW quand il est écris loc.display et =importance (qui n'affiche rien) quand il y a écris autre chose.

J'ai du manquer un détail.

Et merci pour ta réponse également Theze je me penche dessus après car ce qu'a fais M12 semble fonctionner

Re,

Regarde dans le menu Formule / Gestionnaire de noms

dans la formule nommée Importance, tu as la formule que tu avais élaboré

Idem pour Zone

Super résolus ainsi ^^

Rechercher des sujets similaires à "remplacer formule macro vba"