Insertion de formule si contenu d'une autre cellule non-vide par code VBA.....

CyberNeo99

XLDnaute Occasionnel
Bonjour à tous,


J'aimerais savoir si cela est possible d'insérer une formule dans une cellule si une autre cellule est non-vide...

Exemple, si disons dans la colonne A je dois faire une choix via une liste déroulante ou que je dois saisir quelque chose, je voudrais que dans la colonne D par exemple une formule y apparaisse et que si dans la cellule de la colonne A il n'y a rien aucune formule ne doit apparaître dans la colonne D. Il y a aussi la possibilité que si la personne saisi quelque chose dans la colonne A et que par la suite elle efface le contenue de la colonne A la formule doit disparaître.

Je ne sais si cela est possible mais assurément si cela est possible cela se fait via code VBA bien sûr....


Je joint un fichier pour ainsi avoir les explications et ainsi y créer le résultat si cela est possible.

Grand merci à l'avance


Neo
 

Pièces jointes

  • Insertion de formule dans une cellule si autre cellule non vide par code VBA.xls
    21.5 KB · Affichages: 143

CISCO

XLDnaute Barbatruc
Re : Insertion de formule si contenu d'une autre cellule non-vide par code VBA.....

Bonsoir

Peut être avec
Code:
=SI(A2<>"";SI(A2="Bobo";"Pipi";"Caca");"")

mais je ne suis pas certain de bien avoir compris ta demande.

@ plus
 

CyberNeo99

XLDnaute Occasionnel
Re : Insertion de formule si contenu d'une autre cellule non-vide par code VBA.....

Bonjour CISCO,

Désolé pour le délai de réponse mais cette find e semaine j'étais quelque peu sur le carreau, j'ai couvert une grippe alors...j'étais au repos ;o))))

Effectivement j'ai besoin de préciser ma demande car pas évidente..... et possiblement impossible à rélaiser

En fait je veux que dans la cellule de la coonne D puisse apparaître une formule ssi (si et seulement si) il y a une donnée dans la cellule de la colonnne A. S'il n'y a pas de donnée dans la cellule de la colonne A je ne veux pas qu'il y est de formule dans la cellule de la colonne D. ce que j'aimerais aussi si l'usager mets une donnée dans la celluel de la colonne A et ensutie l'efface donc au départ puisqu'une donnée a été mise dans la cellule de la colonne A, la formule apparaîtra dans la cellule de la colonne D mais puisque le contenue de la celluel de la colonne a été effacé je veux que la formule soit enlevé, disparaisse.....

Je ne sais même pas si cela peut se faire mais une chose que je suis sûr si cela se fait ce sera par code VBA.....


Merci à tous

Neo
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Insertion de formule si contenu d'une autre cellule non-vide par code VBA.....

Bonjour CyberNeo, Cisco, bonjour le forum,

Pourquoi écrire une formule puisque tu utilises le VBA ? Je te propose, à l'aide de la macro événementielle Change, cette solution en dur :
Si A est vide, D est vide
si A n'est pas vide, D est fonction de A... (en dur)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Application.Intersect(Target, Range("A2:A10")) Is Nothing Then Exit Sub 'limite l'action a la plage A2:A10
If Selection.Cells.Count > 1 Then Exit Sub 'limite l'action a une seule cellule
If Target.Value = "" Then 'condition : si la cellule est effacée
    Target.Offset(0, 3).Value = "" 'efface la cellule de la colonne D
Else 'sinon
    Target.Offset(0, 3).Value = IIf(Target.Value = "Bobo", "Pipi", "Caca") 'écrit en colonne D en fonction de la colonne A (si A = "Bobo" alors "Pipi", sinon "Caca"
End If 'fin de la condition
End Sub
 

CyberNeo99

XLDnaute Occasionnel
Re : Insertion de formule si contenu d'une autre cellule non-vide par code VBA.....

Bonjour Robert,

Merci pour ton code. Maintenant que je sais que cela est possible et effectivement j'aurais dû y penser. Je vais pousser ça un peu plus loin car ce que je veux c'est qu'il y insère une formule au lieu du texte mais qui va me permettre de descendre la formule vers le bas comme l'on fait lorsqu'on y mets une formule et que l'on descends celle-ci vers le bas pour qu'elle s'ajuste en fct du contenue. Je vais revenir là dessus ultérieurement car je ne veux pas élaborer quelque chose et que ce soit quelque peu dans le champ. je regarde ça plus attentivement pour ne que tu ou une autre personne travaille pour rien, me développe un code qui au bout du compte abouti vers un cul-de-sac car je n'aurai pas pris soin de préciser ma demande pour que le résultat soit en ligne et sorte impeccable ou le plus possible disons....


Grand Merci encore


Neo
 

CyberNeo99

XLDnaute Occasionnel
Re : Insertion de formule si contenu d'une autre cellule non-vide par code VBA.....

Bonjour Robert et les autres,


J'ai finalisé le tout pour ainsi vous dirigez sur ce que je recherche. J'ai joint un fichier avec les explications à l'intérieur. J'aurais besoin d'un code VBA qui me permettrait d'insérer une formule dans une cellule s'il y a du contenue dans une autre cellule. Disons que je veux qu'une formule apparaisse dans la cellule de la colonne D si une donnée apparaît dans la cellule de la colonne A. Il y a aussi une autre chose que j'aimerais, J'aimerais que si une information est mise dans la cellule de la colonne A, la formule appraîtra dans la cellule de la colonne D, et que cette donnée dans la cellule de la colonne A est effacé parce que la personne a fait une erreur, je veux que la formule qui a été mis dans la cellule de la colonne D soit effacé. Cette formule doit s'adapté comme lorsqu'on descend une formule vers le bas pour qu'elle s'ajuste au contenue qu'elle réfère.


Grand Merci à l'avance


Neo
 

Pièces jointes

  • Insertion de formule dans une cellule si autre cellule non vide par code VBA v2.xls
    21 KB · Affichages: 137

CyberNeo99

XLDnaute Occasionnel
Re : Insertion de formule si contenu d'une autre cellule non-vide par code VBA.....

ReBonjour,


Je suis sincèrement désolé mais j'ai une demande d'ajustement pour arriver à ce que j'aimerais je joint un fichier. Si vous avez besoin d'explication ne vous gêné pas. Je crois que ma demande sera compliquer.....

Si qqu me trouve comment écrire la formule en code VBA, je serai aux anges.....


Merci infiniment à l'avance


Neo
 

Pièces jointes

  • Insertion de formule dans une cellule si autre cellule non vide par code VBA v3.xls
    22 KB · Affichages: 82

CyberNeo99

XLDnaute Occasionnel
Re : Insertion de formule si contenu d'une autre cellule non-vide par code VBA.....

Bonjour à tous,

J'ai trouvé probablement la solution mais j'ai une erreur d'exécution 1004 et il est écrit Impossible de lire la propriété VLookup de la classe WorsheetFunction

Je comprend bien qu'il n'arrive pas à lire la fonction VLookup pour une raison. J'ai même changé le .Cells(I, 5) par Range("G" & I) et j'ai une autre erreur. Comme vous pouvez le constatez 5e colonne devrait être un Emais j'ai G ce qui en vient qu'à vous dire que j'ai des cellules fusionné, peut être la source du Pb mais j'en doute.

Private Sub Worksheet_Change(ByVal Target As Range)

If Application.Intersect(Target, Range("R35:R74")) Is Nothing Then Exit Sub 'limite l'action a la plage A2:A10
If Selection.Cells.Count > 1 Then Exit Sub 'limite l'action a une seule cellule
If Target.Value = "" Then 'condition : si la cellule est effacée
Target.Offset(0, 3).Value = "" 'efface la cellule de la colonne D
Else 'sinon

For I = 35 To 74

If Sheets("Détail projet").Cells(I, 18) < Application.WorksheetFunction.VLookup(Sheets("Détail projet").Cells(I, 5), Sheets("Prévisions listées").Range("A2:V101"), 9, False) - (0.1 * (Application.WorksheetFunction.VLookup(Sheets("Détail projet").Cells(I, 5), Sheets("Prévisions listées").Range("A2:V101"), 9, False))) Then

Sheets("Détail projet").Cells(I, 21) = Application.WorksheetFunction.VLookup(Sheets("Détail projet").Cells(I, 5), Sheets("Prévisions listées").Range("A2:V101"), 19, False)

Else

If Sheets("Détail projet").Cells(I, 18) > Application.WorksheetFunction.VLookup(Sheets("Détail projet").Cells(I, 5), Sheets("Prévisions listées").Range("A2:V101"), 9, False) + (0.1 * (Application.WorksheetFunction.VLookup(Sheets("Détail projet").Cells(I, 5), Sheets("Prévisions listées").Range("A2:V101"), 9, False))) Then

Sheets("Détail projet").Cells(I, 21) = Application.WorksheetFunction.VLookup(Sheets("Détail projet").Cells(I, 5), Sheets("Prévisions listées").Range("A2:V101"), 20, False)

Else

Sheets("Détail projet").Cells(I, 21) = Application.WorksheetFunction.VLookup(Sheets("Détail projet").Cells(I, 5), Sheets("Prévisions listées").Range("A2:V101"), 18, False)

End If

End If

Next

End If


End sub

Je joint un fichier où tout fonctionne à merveille. Si vous effacer les donner de la feuille dans la colonne A et que vous remettez les mêmes valeurs vous verrez que les résultat des colonnes D et G sont les mêmes ce que je voulais. J'ai pris le même code et j'ai une erreur de compilation de code VBA.


Si qqu connaît la source du Pb ça serait très apprécier.


Grand Merci à l'avance


Neo
 

Pièces jointes

  • Insertion de formule dans une cellule si autre cellule non vide par code VBA v4.xls
    32 KB · Affichages: 115
  • Insertion de formule dans une cellule si autre cellule non vide par code VBA v4.xls
    32 KB · Affichages: 134
  • Insertion de formule dans une cellule si autre cellule non vide par code VBA v4.xls
    32 KB · Affichages: 131

Discussions similaires

Réponses
4
Affichages
186