Fonction Si par Macro VB

  • Initiateur de la discussion Initiateur de la discussion undo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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. 😱

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 ?
 
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
 
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.
 
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
 
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
 
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
 
Re : Fonction Si par Macro VB

SNIF, malheureusement ça ne marche pas pour moi.

as-tu un exemple plus concret sur fichier excel ?

Le but étant d'adapter cette fonction à une colonne entière et non une seule cellule.

merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
20
Affichages
631
  • Question Question
Microsoft 365 Fonction SI
Réponses
23
Affichages
436
Retour