FormulaR1C1 ? question

Bonjour

Petite question sur les Formula dans les macros

If Range("A2") = "ok" then

[D2].FormulaR1C1 = "=IF(Brasseur!R[8]C[69]="","",R[0]C[-2])"

si je traduis cette macro ( je sais pas si elle est correcte )

Si dans la case A2 il est marqué "ok"

alors dans la case D2 il lance la formule Si(Brasseur!R35=" "; " ", A2) ? en fait la condition c'est que si cette cellule R35 est vide rien ne s'affiche sinon il affiche le resultat de A2 ( qui donnera d'autre valeur que "ok" par la suite )

j'aimerai recuperer la valeur "ok" dans la cellule D2 sans passer par =SI(...) pour eviter de supprimer la formule quand D2 prend la valeur "ok"

je passe par la case D2 pour utiliser un compteur en fait qui incremente de 1 la case D14 des que "ok" apparait en D2

le soucis étant que il ne prend pas en compte la valeur de la cellule

avec:

If Not Application.Intersect(Target, Range("D2")) Is Nothing Then

If Range("D2") Like "ok" Then Cells(14, 4) = Cells(14, 4) + 1

private sub ()

If Range("A2") = "ok" then

If Not Application.Intersect(Target, Range("D2")) Is Nothing Then (Init du compteur)

[D2].FormulaR1C1 = "=IF(Brasseur!R[8]C[69]="","",R[0]C[-2])" ( La formule =Si(Brasseur!R35=" "; " ", A2) )

if Range("D2") Like "ok" Then Cells(14, 4) = Cells(14, 4) + 1 ( Compteur +1 en D14 quand D2 affiche "ok")

end if

end if

ca doit etre completement faux mais je cherche

pouvez-vous m'aider?

Si c'est juste un range("D2").value like "ok" je crains

end sub

Bonjour,

pas tout compris à tes explications et pas eu le courage de lire jusqu'au bout.

Apprend à être concis pour un pb qui à la base semble simple

Si(Brasseur!R35=" "; " ", A2)

Pour tester si une cellule est vide c'est = ""

Avec = " " tu testes si elle a un espace.

eric

Oui c'etait pour être plus visible.

par contre mon compteur ne fonctionne pas, il semble que le code est correct.

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("E2")) Is Nothing Then

If Range("E2") Like "*IWL250*" Then Cells(14, 4) = Cells(14, 4) + 1

End If

End Sub

Merci

Sachant qu'en E2 il y a une formule =Si()) qui donne le resultat IW250 je pense que c'est cette formule qui bloque le compteur

sur une autre cellule vide cela fonctionne. en A1 je met IWL250 ca incremente. mais dès qu'une formule est dans la cellule plus de compteur.

Bonjour,

ne laisse (presque) jamais vba choisir la propriété, désigne-là explicitement :

Range("E2").Value

Comme avec certains formats le contenu est différents de l'affichage .Text ou .Value2 peuvent servir.

Si ce n'est pas ça il faudra déposer un fichier en situation qu'on voit les détails.

eric

re,

ci-joint le fichier avec quelques commentaires.

Merci

Le compteur bloque quand un =Si(.. ) est dans la case pour lancer le compteur il faut cliquer sur la cellule et faire entrer pour incrementer ce compteur

il ne prend pas la " valeur même " de la cellule mais la formule en fait j'ai l'impression

10compteur-test.xlsm (17.95 Ko)

Un événement Change ne se déclenche que sur une saisie, pas sur un calcul.

Il faut donc surveiller les antécédents de C1 qui sont saisis, soit : A1.

Ta formule en C1 peut s'écrire plus simplement :

=SI(OU(A1="ok";A1="toi");A1;"")

La macro :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
        If Range("C1").Value Like "*ok*" Then
            Application.EnableEvents = False
            Cells(11, 3) = Cells(11, 3) + 1
            Application.EnableEvents = True
        End If
    End If
End Sub

pourquoi Like "*ok*" ? Mettre Like "ok", voir même ="ok" puisque c'est uniquement ça qui t'intéresse.

Par contre si qq'un saisi OK ou Ok ça ne passera plus. Pour s'en affranchir :

If LCase(Range("C1")).Value = "ok" Then

eric

Ah Merci c'est exactement ca

c'est cette ligne : Application.EnableEvents = False

j'avais pas mis le "false" mais le "true" seulement

par contre je peux compiler avec d'autre case?

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("A2")) Is Nothing Then

If Range("E2").Value Like "IWL250" Then

Application.EnableEvents = False

Cells(14, 4) = Cells(14, 4) + 1

Application.EnableEvents = True

If Range("F2").Value Like "IWL250" Then

Application.EnableEvents = False

Cells(15, 6) = Cells(15, 6) + 1

Application.EnableEvents = True

End If

End If

End If

End Sub

ou je dois faire un sub pour chaque case?

Excel n'a pas de cases mais des cellules. Au début je me demandais si tu parlais du LCase, ou bien de la structure Select Case...

Ben ils sortent d'où ces E2 et F2 ?

Et qu'y-a-t'il dedans ?

Si tu veux une réponse adaptée, fourni un fichier en situation avec les explications précises et détaillées du besoin plutôt qu'un code dont tu n'es pas sûr.

eric

Bonjour,

ci-joint

Le compteur s'incremente de la même manière mais aussi avec une autre cellule

1compteur-test.xlsm (18.11 Ko)

Bonjour,

non mais tu n'as pas compris qu'avec un exemple qui n'a rien à voir avec la réalité tu ne pourras avoir qu'une réponse qui ne correspond pas à ton besoin ???

Tu parles de E2, F2 avec qq chose comme Like "IWL250",

tu passes un fichier avec C1 et D1 qui en plus contiennent la même formule (dont tu n'as même pas fait l'effort de simplifier comme je te l'avais indiqué) qui ne retourne que "ok, "toi" ou "" !!!

N'importe quoi. Si elles ont la même formule (qui en plus n'a pas l'air de correspondre pas à la réalité), nul besoin de contrôler l'autre cellule puisqu'elle aura le même résultat.

Donc dans ton dernier fichier le compteur s'incrémente correctement, aucun soucis.

Tu peux mettre en résolu, moi j'ai fini.

eric

Ba c'était un fichier exemple....

je demandais juste comment compiler avec une autre cellule qui a une autre formule (ici j'ai mis la même formule mais c'est un EXEMPLE ).. c'est tout.

Evidemment que ca reflete pas la réalité, sinon je te file mon fichier excel et tu le fais mais y 'a aucun interet...

je résouds pas de soucis je trouverai, c'est un peu le but aussi.

Merci d'avoir pris le temps

Je ne vois pas en quoi la réponse à un exemple qui n'a rien à voir avec ton pb pourrait t'aider.

ok tu as raison voilà. De toute facon le sujet est résolu.

Rechercher des sujets similaires à "formular1c1 question"