Fonction Si par Macro VB

undo

XLDnaute Junior
Bonjour a tous,

je cherche a remplacer la fonction Si par une macro Excel:confused:

Merci d'avance

cordialement,
undo
 

groundhog

XLDnaute Junior
Re : Fonction Si par Macro VB

Bien le bonsoir.

Je tiens effectivement à m'excuser des informations qui arrivent au fur et à mesure. Le dernier fichier transmis est bien le définitif. Pour mon pardon, je travaillais en fait en parallèle sur ce fichier excel et celui-ci s'est étoffé au fil de l'eau : dans tous les cas, MEA CULPA. :eek:

Merci pour vos réponses ! ;)

Pour ce soir, je fais une pose bien méritée. Je m'attache à la bête dès demain et reviens vers vous si j'ai besoin d'un complément d'information.

:)

Re,

Ceci
est d'autant plus normal que l'évènement "Change" teste le changement du contenu de la cellule sélectionnée et non pas le contenu de toutes les cellules de la feuille !
Une cellule dont le contenu se modifie par une formule n'entre plus dans le cadre de cet évènement sauf si on ajoute des lignes de test.
Mais lesquelles ici ?

Tu as bien écrit :
alors j'ai testé la colonne H.

Tes cellules "C" sont dépendantes de plusieurs autres donc ce sont celles-ci qu'il faut tester dans l'évènement.

Dis nous clairement quelles sont les cellules modifiables qui agissent sur tes cellules "C".
Tant que tu y es, précise si tu veux le mot, à partir d'un des mois ou de tous ceux-ci !

@pierrejean : je viens de lire ton dernier message et partage ton opinion.

Re

Compte tenu du fait que la feuille bdd_stocks peut reagir a une modification de bdd_mouvements j'ai fait un appel a la macro test a partir de Change de bdd_mouvements
PS: Il est penible de travailler avec un fichier qui change de disposition a chaque post et dont les exemples ne sont pas coherents (j'ai bataillé un moment avant de m'apercevoir que sans fournisseur en colonne F la macro ne peut donner de resultat
Veux-tu tester cette version avec des modifications correspondantes au fonctionnement normal ?
 

groundhog

XLDnaute Junior
Re : Fonction Si par Macro VB

Bien le bonjour en ce dimanche de mars.

Bon, mauvaise nouvelle. Le fichier transmis ne résoud pas mon problème.
La seule solution viable que j'ai trouvé de mon côté c'est l'ajout d'une nouvelle colonne à côté de la colonne "C" de chaque mois, avec une macro copiant le résultat de la formule incluse dans la colonne "C", si et seulement si le résultat change.

Pourriez-vous m'aider à la réalisation de cette macro ?

Merci à vous tous pour votre, en espérant avoir été clair dans mon discours
 

groundhog

XLDnaute Junior
Re : Fonction Si par Macro VB

Le problème ne viendrait pas de la formulation de la macro ?

J'ai trouvé ça dans un autre forum, peut-être plus judicieux d'utiliser cette syntaxe ?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range('B2:B3')) Is Nothing Then ta macro


Non, je suis désolé :

Ta première formule répond bien à la demande. Le seul hic, et comme je l'indique dans les précédents posts, c'est que lors d'une modification de valeur (via une formule) dans les colonnes par mois, rien ne se passe. La seule façon d'obtenir le résultat escompté, c'est de taper la modif en texte dans la colonne.
 

Fo_rum

XLDnaute Accro
Re : Fonction Si par Macro VB

Salut,

sans autres précisions formulées, une dernière macro ("Rupture" pour au moins 1 mois)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Li As Integer, Col As Byte, C As Byte
  If Target.Count > 1 Then Exit Sub
  Li = Target.Row
  If Not Intersect(Target, Range("H" & Li & ":CF" & Li)) Is Nothing Then
    For Col = 14 To 80 Step 6
      If Cells(Li, Col) < Cells(Li, "H") Then C = C + 1
    Next
    Cells(Li, "G") = IIf(C = 0, "EN STOCK", "RUPTURE")
  End If
End Sub
 

groundhog

XLDnaute Junior
Re : Fonction Si par Macro VB

Merci Fo_rum

Ta 1ère macro fonctionne tout à fait bien, ce n'est pas le problème.

Je demande :

QUAND CHANGEMENT VALEUR "B2", SI "B2"<="A2" THEN "C2"="RUPTURE" SINON "EN STOCK"

Ma problèmatique aujourd'hui est que le contenu de "B2" est une formule, et non du texte. Pour avoir testé, si le contenu est du texte, pas de soucis. En revanche pour la formule, la macro ne reprend pas la modification.


Salut,

sans autres précisions formulées, une dernière macro ("Rupture" pour au moins 1 mois)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Li As Integer, Col As Byte, C As Byte
  If Target.Count > 1 Then Exit Sub
  Li = Target.Row
  If Not Intersect(Target, Range("H" & Li & ":CF" & Li)) Is Nothing Then
    For Col = 14 To 80 Step 6
      If Cells(Li, Col) < Cells(Li, "H") Then C = C + 1
    Next
    Cells(Li, "G") = IIf(C = 0, "EN STOCK", "RUPTURE")
  End If
End Sub
 

vbacrumble

XLDnaute Accro
Re : Fonction Si par Macro VB

Bonsoir

groundhog:
'Dans un module
Code:
Public valcel
Public Sub mymacro()
Msgbox "test"
End sub

Code:
'Dans le code de la feuille active
Private Sub Worksheet_Calculate()
If Range("A1").Value = valcel Then Else mymacro
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
mymacro
Else
valcel = Range("A1").Value
End If
End Sub
 

vbacrumble

XLDnaute Accro
Re : Fonction Si par Macro VB

Re


Une suggestion : groundhog


Je vois en relisant le fil que c'est undo qui l'a ouvert.

Peut-être devrais tu ouvrir un fil de discussion spécifique à ton problème.

Car ce fil contient déjà trois pages.
 

Discussions similaires

Réponses
3
Affichages
124