XL pour MAC Problème macro référence

Micka2305

XLDnaute Nouveau
Bonsoir, je viens vers vous car je suis en train d'essayer de créer un classeur de gestion de stock personnalisé.
Grace à plusieurs recherche sur ce site j'ai bien avancer.

Seulement voilà, je voudrais sur la page "bon de livraison" entrée une valeur en K29 qui :

Si déjà existante dans la colonne code (C13:C52) et si existante page "stock" soit en colonne b soit en colonne c soit les deux ajoute +1 à la quantité livré sur la page "bon de livraison".
Si non existante dans la colonne code (C13:C52) mais existante page "stock" soit en colonne b soit en colonne c soit les deux alors entrer la valeur k29 en C (cellule vide la plus proche) et agrémenté la quantité livré correspondante +1.
Si non existante dans la colonne code (C13:C52) et non existante page "stock" soit en colonne b soit en colonne c soit les deux alors MsgBox "créer d'abord la nouvelle référence"

J'ai mal à la tête rien que d'avoir écris tout ça...
Donc par avance un énorme merci.

ps: je travaille sur mac Sierra
 
Dernière édition:
Solution
Bonjour,

J'ai quelque peu arrangé le code qui fonctionne maintenant.
VB:
Private Sub Worksheet_Change(ByVal target As Range)
    Dim b As Range, bb As Boolean
    Dim c As Range, bc As Boolean
    Dim d As Range, bd As Boolean
    
    If target.Address = "$K$29" Then
        Set b = Columns(3).Find(target.Value, LookIn:=xlValues, lookat:=xlWhole)
        With Sheets("stock")
            .Unprotect ""
            Set c = .Columns(2).Find(target.Value, LookIn:=xlValues, lookat:=xlWhole)
            Set d = .Columns(3).Find(target.Value, LookIn:=xlValues, lookat:=xlWhole)
        End With
        
        bb = Not b Is Nothing       'Vrai si trouvé
        bc = Not c Is Nothing
        bd = Not d Is Nothing...

laurent3372

XLDnaute Impliqué
Supporter XLD
Bonjour,

J'ai quelque peu arrangé le code qui fonctionne maintenant.
VB:
Private Sub Worksheet_Change(ByVal target As Range)
    Dim b As Range, bb As Boolean
    Dim c As Range, bc As Boolean
    Dim d As Range, bd As Boolean
    
    If target.Address = "$K$29" Then
        Set b = Columns(3).Find(target.Value, LookIn:=xlValues, lookat:=xlWhole)
        With Sheets("stock")
            .Unprotect ""
            Set c = .Columns(2).Find(target.Value, LookIn:=xlValues, lookat:=xlWhole)
            Set d = .Columns(3).Find(target.Value, LookIn:=xlValues, lookat:=xlWhole)
        End With
        
        bb = Not b Is Nothing       'Vrai si trouvé
        bc = Not c Is Nothing
        bd = Not d Is Nothing
                                  
        If bb Then                   'Existe dans le bon de livraison (Existe forcément dans le stock)
            b.Offset(, 2) = b.Offset(, 2) + 1
            target.MergeArea.ClearContents
            End If
              
        If Not bb And (bc Or bd) Then   'N'existe pas dans le bon de livraison, mais existe dans le stock
            Set c = Cells(Rows.Count, 3).End(xlUp).Offset(1) 'Première ligne vide
            If c.Row > 52 Then
                MsgBox ("Vous avez saisi le nombre d'articles maximum!")
                Exit Sub
            End If
            c.Value = target.Value
            target.MergeArea.ClearContents
        End If

        If Not bb And Not bc And Not bd Then
            MsgBox ("La rŽfŽrence que vous souhaitez ajouter ne fait pas partie du stock. Veuillez d'abord la creer dans le stock. Merci ")
        End If
        
        target.Select           'Pour saisir la référence suivante
                
       End If
      
 End Sub
Cordialement,
--
LR
 

Discussions similaires

Réponses
2
Affichages
894

Statistiques des forums

Discussions
311 724
Messages
2 081 937
Membres
101 844
dernier inscrit
pktla