Mettre une valeur en fonction des données d'une plage

Bonjour à tous,

je souhaiterai en vba mettre une valeur (0 ou 1) dans une cellule en fonction d'un plage de cellule

Si dans la plage C4:C50 j'ai au moins une valeur alors mettre 1 dans la cellule A1

Si dans la plage C4:C50 je n'ai aucune valeur alors mettre 0 dans la cellule A1

Merci de votre aide

bonsoir ced91300,

cette plage C4:C50, ce sont des données ou des formules ? Si ce sont des formules, lesquelles ?

Autrement, cela fonctionne avec un simple "Worksheet_Change"-event.

bonsoir,

Ce sont des donnes

re, ces valeurs, elles sont numériques ou numériques&textes, vous devez choisir une des 2 possibilités. Voir cette macro dans le module de "blad1"

Private Sub Worksheet_Change(ByVal Target As Range)
     Set c = Range("C4:C50")
     If Intersect(Target, c) Is Nothing Then Exit Sub

     'Range("A1").Value = -(WorksheetFunction.Count(c) > 0) 'si on veut que des valeurs numériques
     Range("A1").Value = -(WorksheetFunction.CountA(c) > 0)     'valeurs numériques et textes
End Sub
17ced91300.xlsb (19.15 Ko)

Merci BsAlv

C'est bien ce que j'ai besoin sauf que j'aurai souhaité pouvoir l'inclure à la suite d'un vba déjà existant dans un module (pour les onglets de 2 à 17)

Merci de ton aide

re,

alors ajoutez uniquement une des 2 dernières lignes ...

Impec, merci bcp pour ton aide

Cordialement

cedric

bonjour,

Et si je souhaite pouvoir réaliser la même chose mais sur 2 plages ?

Merci

re,

pour ce change -macro

Private Sub Worksheet_Change(ByVal Target As Range)

     Set c = Range("C4:C50")                 'première plage
     If Not Intersect(Target, c) Is Nothing Then
          'Range("A1").Value = -(WorksheetFunction.Count(c) > 0) 'si on veut que des valeurs numériques
          Range("A1").Value = -(WorksheetFunction.CountA(c) > 0)     'valeurs numériques et textes
     End If

     Set c = Range("G4:G50")                 '2eme plage
     If Not Intersect(Target, c) Is Nothing Then
          'Range("A2").Value = -(WorksheetFunction.Count(c) > 0) 'si on veut que des valeurs numériques
          Range("A2").Value = -(WorksheetFunction.CountA(c) > 0)     'valeurs numériques et textes
     End If

     Set c = Range("Z4:Z50")                 '3eme plage
     If Not Intersect(Target, c) Is Nothing Then
          'Range("A3").Value = -(WorksheetFunction.Count(c) > 0) 'si on veut que des valeurs numériques
          Range("A3").Value = -(WorksheetFunction.CountA(c) > 0)     'valeurs numériques et textes
     End If

End Sub

Dans une autre macro

Sub MacroX()

     '......
     Range("A1").Value = -(WorksheetFunction.CountA(Range("c4:C50")) > 0)
     Range("A2").Value = -(WorksheetFunction.CountA(Range("G4:G50")) > 0)
     Range("A3").Value = -(WorksheetFunction.CountA(Range("Z4:Z50")) > 0)
     '......

End Sub
Rechercher des sujets similaires à "mettre valeur fonction donnees plage"