Une petite macro ...

Résolu/Fermé
Utilisateur anonyme - 25 juin 2013 à 10:57
 Utilisateur anonyme - 26 juin 2013 à 15:50
Bonjour,

En cherchant sur le forum, j'essaye de construire un peu de VBA pour mon fichier excel.
Je vous explique mon problème :
Lorsque la valeur d'une cellule de la colonne B est égale à "NEW" alors on ecrit dans la meme ligne mais à la colonne K la formule SI(NBCAR(Jx)<>16;"";Jx) (x étant la veur de ma ligne) et ceci à chaque modification de la valeur d'une cellule de la colone B.
J'ai déja glané quelques bouts de codes comme suivant :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range
For Each Cel In Target
If Not Application.Intersect(Target, Range("B1:B250")) Is Nothing Then
Select Case Cel.Value
If Cel.Value = "NEW" Then ... ?

End Select
End If
Next Cel
End Sub

Je n'arrive pas à finir.
Quelqu'un pourrait-il m'aider ? Merci.

A voir également:

1 réponse

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
25 juin 2013 à 11:27
Bonjour,

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Cel As Range
    'cellules colonne B
    If Not Application.Intersect(Target, Range("B1:B250")) Is Nothing And Target.Count = 1 Then
        'test en majuscule: permet maj et min dans la saisie
        If UCase(Target.Value) = "NEW" Then
            'ligne
            lig = Target.Row
            ' les "" de la formule, Chr(34)--->" pour la chaine formule
            rien = ""
            Range("K" & Target.Row).FormulaLocal = "=SI(NBCAR(J" & lig & ")<>16;" & Chr(34) & rien & Chr(34) & ";J" & lig & ")"
        End If

    End If
End Sub


Bonne suite
0
Utilisateur anonyme
25 juin 2013 à 12:33
Merci !!

Ca marche nickel.
0
Utilisateur anonyme
26 juin 2013 à 11:33
Bonjour, nouveau jour, nouveau problème ... Et si je dois ajouter une autre action pour une autre colonne, j'ai essayé ca :

Private Sub Worksheet_Change(ByVal Target As Range)
'cellules colonne B
If Not Application.Intersect(Target, Range("B1:B250")) Is Nothing And Target.Count = 1 Then
If UCase(Target.Value) = "NEW" Then
'ligne
lig = Target.Row
rien = ""
Range("K" & Target.Row).FormulaLocal = "=SI(NBCAR(J" & lig & ")<>16;" & Chr(34) & rien & Chr(34) & ";J" & lig & ")"
End If

End If
If Not Application.Intersect(Target, Range("u1:u250")) Is Nothing And Target.Count = 1 Then
If UCase(Target.Value) = "m²" Then
'ligne
lig1 = Target.Row
Range("T" & Target.Row).FormulaLocal = "=PRODUIT(V" & lig1 & ":W" & lig1 & ")"
End If

End If
End Sub
mais ca ne marche pas ...:-(
0
Utilisateur anonyme
26 juin 2013 à 15:50
il faut juste que j'enlève le Ucase et ça fonctionne ! Merci
0