inserer une formule via le vba

  • Initiateur de la discussion dj.run
  • Date de début
D

dj.run

Guest
bonjour à toutes et à tous,

quelqu'un peut il (elle) m'aider ?

je cheche une possibilite pour inserer une formule de type condition :
=si(c10=0;"";c10) via le vba j'ai essayé avec :

Range("d10").Formula = "=SI(C10=0;"";C10)"

je voudrai qu'en d10 il y est la formule =si(c10=0;"";c10)

et ça marche pas . je ne comprends pas car j'y suis arrivé avec une formule plus simple : Range("C38").Formula = "=C18-(C37+C36)" et ça, ça marche.

je pense qu'avec le =si il doit faloir une autre procedure mais je trouve pas.

de plus, comment puis je faire pour eviter de copier deux fois la meme chose dans une liste .

j'utilise une fonction :

Range("don!b2").End(xlDown).Offset(1, 0).Value = Textsortie.Value

pour rajouter des elements à une liste mais je me suis rendu compte que si je tape deux fois la meme chose, il me copie aussi deux fois la meme chose .

j'aimerai que si l'element que je veux rajouter existe deja, qu'il ne le copie pas et eventuelement qu'il me signale que ça existe deja (le msgbox je devrai estre capable de le faire)

merci d'avance pour votre aide .
 
C

C@thy

Guest
dj.run, en anglais le si! (IF)

BipBip.gif
 
E

eric

Guest
Salut DJ.run

Pour ton problème de formule, je ne suis pas spécialiste, je laisse celà au pros.
En revanche, j'ai rencontré ton problème de vérification dans une liste et voilà comment je m'en suis sorti :

If Cells.Find(Textsortie, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False) Is Nothing Then _
Range("don!b2").End(xlDown).Offset(1, 0).Value = Textsortie.Value
Else: MsgBox ("données déjà existante "): Exit Sub


Bonne fin de journée
 
D

dj.run

Guest
bonsoir Mytå, (oui chez nous c'est le soir 19h15)

encore une fois et oui c'est pas la premiere fois BRAVO !!

c'est tout à fait ça et ça marche (et je l'aurai jamais trouvé !! lol)

merci .


Par contre eric ton code ne fonctionne pas, c'est peut etre pcq il commence par if cells.find ?

je sais pas si c'est ça mais le nom textsortie correspond au nom que j'ai affecté à un textbox dans mon usf .

merci et je continu à chercher

dj.run
 
E

eric

Guest
Bonjour Cathy,

Est-il possible dans ta formule de changer "formula" par "formulalocal", et ainsi conserver notre bon vieux langage français ?

Et si oui, quel est la synthaxe ?

Merci et bonne soirée
 
C

C@thy

Guest
je précise R10C3 = row(ligne)10 column (colonne)3,

faut pas mettre C10! ou tu fais du relatif, comme te l'indique Myta.

Le mieux c'est de passer par l'enregistreur de macros pour taper ta formule, comme ça c'est lui qui l'écrit tout seul!

BipBip.gif
 
E

eric

Guest
Avec mes excuses :

If Cells.Find(Textsortie, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False) Is Nothing Then _
Range("don!b65000").End(xlUp).Offset(1, 0).Value = Textsortie.Value _
Else MsgBox ("données déjà existante "): Exit Sub

Bonne soirée
 
C

C@thy

Guest
Ben non, (enfin, j'crois pas), formulalocal c'est si t'as une formule en anglais dans une cellule et que tu ouvres le fichier sur un PC qui a la version française.

Je ne voudrais pas dire de bêtises, consulte l'aide en ligne si tu l'as.

BipBip.gif
 
D

dj.run

Guest
re eric et les autres sur le forum,

eric j'ai essaye ta 2ème solution et il se passe rien.

ça fontionne pas . sniff et re sniff !

merci quand meme pour ton aide et les autres aussi je ne vous oublie pas.

dj.run
 
M

Mytå

Guest
Bonsoir le Forum

Dj.run peut-etre une solution a ton probleme un debut de solution :)

Sub Ajout_sans_doublon()
der_ligne = Range("b65535").End(xlUp).Row
For Each cellule In Range("B2:B" & der_ligne)
If cellule.Value = Textsortie.Value Then
MsgBox ("Existe deja")
Exit Sub
End If
Next cellule
Cells(der_ligne + 1, 2) = Textsortie.Value
End Sub

smiley_417.gif


P.S. Prière d'accuser réception si cela te convient
ou ne convient pas en répondant sur ce Post ... Merci !
 
D

dj.run

Guest
bonour à toutes et à tous,

Mytå, c'est encore tout bon, je ne sais plus quoi dire, si ce n'est encore une fois: MERCI .

j' y arriverai un jour ( tout seul), il faut etre patient .


merci à tous et à tres bientot


dj.run
 

Discussions similaires

Réponses
1
Affichages
195

Statistiques des forums

Discussions
314 647
Messages
2 111 533
Membres
111 191
dernier inscrit
Assjmka