Une petite macro ...

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
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.

1 réponse

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    1. Utilisateur anonyme
       
      Merci !!

      Ca marche nickel.
      0
    2. Utilisateur anonyme
       
      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
    3. Utilisateur anonyme
       
      il faut juste que j'enlève le Ucase et ça fonctionne ! Merci
      0