VBA - Formule en fonction de la valeur d'une cellule

Bonjour a tous,

Tout d'abord merci pour ce forum qui est vraiment tres utile et pour les reponses donnees qui sont souvent d'excellentes qualites.

Je me lance depuis peu dans la "programation" VBA afin de creer des outils pour faciliter mes taches au travail mais je suis bloque pour creer la chose suivante :

Exemple : en partant de C11, je souhaiterais que ma macro applique une recherveV en D11 et E11 seulement si C11 est sup. a 0.

Si C11 est vide, je voudrais que la macro passe sur C12 sans reecrire ce qui pourrait se trouver en D11 et E11, et ainsi de suite...

J'arrive a creer une macro pour faire la rechercheV quand C11 a une valeur connue, mais si je laisse la cellule vide, evidemment je me retrouve avec un N/A en D11 et E11.

Je joins un exemple pour etre plus clair...

Merci d'avance de votre aide.

Louis.

16test.xlsm (41.74 Ko)

bonjour,

Utiliser une macro pour écrire une formule n'a pas de sens : Habituellement on utilise plutôt les macros pour supprimer les formules inutiles ! M'enfin... Il faudrait écrire : (un peu la même formule que sur la ligne 10)

Sub designation()
Dim i
For i = 11 To 15
    Cells(i, 4).Formula = "=IF(C" & i & ">0,VLOOKUP(C" & i & ",REF,3,FALSE),"""")"
    Cells(i, 5).Formula = "=IF(C" & i & ">0,VLOOKUP(C" & i & ",REF,2,FALSE),"""")"
Next i
End Sub

A+

Bonjour,

Un incident de connexion réseau à fait passer mon message à la trappe mais comme cela allait dans le même sens que celui de Galopin (que je salue), inutile que je réécrive...

Cordialement.

Bonjour Galopin01

Merci pour votre reponse rapide et de votre proposition.

Je n'ai pas du assez bien m'exprimer dans ma demande, car en effet si le code que vous me proposez me permet de ne pas avoir de "N/A" dans les cellules de recherches il remplace toutes valeurs qui s'y trouveraient deja (car remplacees par "" de la ligne de code).

Pour etre plus precis, dans mon exemple :

1. si C11 > 0 alors je souhaite que la macro applique les formules de rechercheV dans les cellules D11 et E11

2. puis si C12 = 0, je souhaite que la macro ne fasse absolument rien sur les cellules D12 et E12 pour ne pas effacer les potentielles valeurs et/ou textes qui s'y trouveraient. Donc la macro devrait passer cette cellule et aller sur C13 etc...

Peut etre y a-t-il un autre moyen mais mes connaissances VBA s'arrete la.

Merci de votre aide.

Louis

Si tu mets une formule, dans la cellule tu verras ce que la formule renvoie... si tu veux y voir autre chose tu ne mets pas de formule.

Ton raisonnement est aberrant !

Je reviens donc sur ce que j'avais déjà dit (mais qui n'est pas passé), soit ce que tu veux obtenir peut être renvoyé par une formule, soit tu utilises VBA pour ne pas mettre de formule ! Mais ton mélange fait partie des mauvaises utilisations de VBA.

Cordialement.

Le "ton raisonnement est aberrant" n'est pas necessaire. Je viens pour trouver de l'aide, pas des critiques.

J'ai reussi a resoudre mon probleme, je le poste si ca peut etre utile a quelqu'un d'autre.

En resume, je voulais que la macro copie ma formule rechercheV en colonnes D et E uniquement si la cellule C etait vide pour laisser l'opportunite a l'utilisateur d'inscrire du texte en D et E sans que cela ne soit supprime a chaque fois que la macro est appellee

le code que j'ai trouve :

Sub designation()

For i = 11 To 13
If Cells(i, 3) > 0 Then
    Cells(i, 4).Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],ref,3,FALSE)"
    Cells(i, 5).Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],ref,2,FALSE)"
Else
Cells(1, 1).Select

End If
Next i

End Sub
30test.xlsm (42.71 Ko)
4test.xlsm (42.71 Ko)
7test.xlsm (42.71 Ko)

J'ai la faiblesse de penser que qualifier une pratique ou une orientation d'absurde est un premier pas pour initier une réorientation plus cohérente... mais nul n'y est forcé !

Il est certain que si l'objectif est de pouvoir écrire dans des cellules ou y mettre des résultats de recherche, cela ne s'harmonisait guère avec une formule mais dans ce cas VBA pouvait affecter le résultat de la recherche ou ne rien mettre, plutôt que mettre une formule ! Et être déclenché par un évènement...

On voit des demandeurs arrivant avec du code enregistré pour demander comment ils peuvent le modifier pour le rendre plus efficace... ce qui est rationnel sachant que du code enregistré est par définition du mauvais code... mais demander de l'aide pour aboutir à adopter un code enregistré... ! Pas encore vu !

Rechercher des sujets similaires à "vba formule fonction valeur"