XL 2010 Formule excel..

  • Initiateur de la discussion Initiateur de la discussion titi1310
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

titi1310

XLDnaute Nouveau
Bonjour,

J'aurai besoin d'aide..

J'ai un tableau excel ci-joint (que j'ai raccourci car il le fichier est trop lourd).
Chaque client a différents animaux : soit des ovins/caprins, soit des bovins, ou les deux.
Je voudrais créer une formule dans "Espèce" qui prenne en compte la chose suivante :
- Si un client à que des ovins/caprins, mettre dans "Espèce" = Ovins/Caprins, si il n'a que des "Bovins" = mettre "Bovins", par contre si il y a des Ovins/Caprins et des Bovins, mettre = MIXTE.

Un grand merci pour votre retour.. ☺☺
Capture.JPG
 
Bonsoir titi1310, sylvanu, JHA, Modeste geedee,

Voyez le fichier joint et cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
On Error Resume Next
With Intersect(Range("C2:C" & Rows.Count), UsedRange)
    .ClearContents 'RAZ
    For Each a In .Offset(, 1).SpecialCells(xlCellTypeConstants).Areas
        a(1, 0) = IIf(Application.CountIf(a, a(1)) = a.Count, a(1), "MIXTE")
    Next
End With
Application.EnableEvents = True
End Sub
Elle s'exécute quand on modifie ou valide une cellule quelconque.

La colonne C se remplit et ne peut plus être modifiée.

A+
 

Pièces jointes

Dernière édition:
Bonjour le forum,

Une autre solution dans ce fichier (2) avec une fonction VBA :
VB:
Function Espece(colonne As Range) As String
Dim c As Range
Set c = Intersect(Application.Caller.EntireRow, colonne)
If c = "" Or c(0) <> "" And c.Row > 2 Then Exit Function
Espece = c
While c <> ""
    If c <> Espece Then Espece = "MIXTE": Exit Function
    Set c = c(2)
Wend
End Function
Formule en C2 à tirer vers le bas :
Code:
=Espece(D:D)
Bonne journée.
 

Pièces jointes

Bonjour titi1310, le forum,

En colonne "Animaux" il n'y a plus de cellules vides pour séparer les données de chaque client.

Il faut donc utiliser la colonne "N° Client" et cette nouvelle fonction VBA :
VB:
Function Espece(Client As Range, Animaux As Range) As String
Dim c1 As Range, c2 As Range, nom As String
Set c1 = Intersect(Application.Caller.EntireRow, Client)
Set c2 = Intersect(c1.EntireRow, Animaux)
If c1 = c1(0) Then Exit Function
nom = c1
Espece = c2
While c1 = nom
    If c2 <> Espece Then Espece = "MIXTE": Exit Function
    Set c1 = c1(2)
    Set c2 = c2(2)
Wend
End Function
Fichier (3) avec en S2 la formule =Espece(B:B;T:T)

Bonne journée.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
147
Réponses
55
Affichages
1 K
  • Question Question
Microsoft 365 Aide Excel formule
Réponses
4
Affichages
398
Réponses
9
Affichages
544
Réponses
26
Affichages
2 K
Réponses
4
Affichages
796
Retour