Rapport de message :*
 

Re: macro argument: couleur de cell

Titre du sujet : Re: macro argument: couleur de cell
par myDearFriend! le 15/04/2008 19:43:35

Bonsoir gilles, le Forum,

Citation :

gilles a écrit:
Bravo ! nous nous sommes enfin compris et, votre solution est impeccable car elle fait abstraction du nombre de valeurs à traiter (col E) ; de plus le problème de la « consolidation » est réglé
Dans le soucis de rendre l’ouvrage ultra simple d’utilisation je vous demande si il est possible de décomposer la valeur ( C12) de manière à ce que l’utilisateur par l’ usage de la cell (B 12 ) n’ai qu’a rentrer la valeur en + ou - qui vient modifier C12 Ceci pour éviter l’usage d’ une calculette et de saisir la val (C12) ainsi modifiee quitte à passer par un bouton afin que cette opération soit « tactilement » validée .Dans même soucis je pense que la valeur saisie en (B12)doit être à Usage unique pour éviter la double saisie


Tu trouveras ci-joint le fichier modifié en conséquence (j'ai toutefois ajouté un contrôle par validation de données à B12 pour s'assurer que la saisie sera bien de type numérique dans cette cellule).

Le code utilisé est le suivant :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
'myDearFriend!  -  www.mdf-xlpages.com
Dim C As Range
Static EnCours As Boolean
    If EnCours Then Exit Sub    '
Pour éviter un effet circulaire
    
'Si modif utilisateur en A3 ou B12
    If Not Application.Intersect(Target, Union(Range("A3"), Range("B12"))) Is Nothing Then
        '
Recherche de l'élément en colonne E
        Set C = Columns("E").Find(Range("A3").Value)
        If Not C Is Nothing Then
            '
Si A3 a été modifiée par l'utilisateur
            If Target.Address = "$A$3" Then
                Range("C12").Value = C.Offset(0, 1).Value
            Else
            '
Si C12 a été modifiée par l'utilisateur
                Range("C12").Value = Range("C12").Value + Range("B12").Value
                C.Offset(0, 1).Value = Range("C12").Value
                EnCours = True
                Range("B12").ClearContents
                EnCours = False
            End If
        End If
    End If
End Sub


Citation :

gilles a écrit:
Pour apprendre : à « l’étude » de votre code : optionexplicit correspond à ?


Je te recommande vivement de lire l'article VBA et les variables et notamment le paragraphe consacré à Option Explicit .

Si tu as besoin d'éclaircissements supplémentaires, n'hésite pas...

Cordialement,