Chercher plusieurs résultats et les mettre dans des cellules Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
M
Marcelkader
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 21 novembre 2013
Version d'Excel : 2010 FR

Message par Marcelkader » 21 novembre 2013, 17:19

Bonjour à vous tous; je me retrouve devant un nouveau petit souci et pourtant j'ai cherché avant de vous demander de l'aide, mais j'ai rien trouver.

Lorsque l'on veut chercher plusieurs résultats? par exemple, mettre dans des cellules les jours où Camille a mangé plus de 900 g d'aliments...(résultats dans cases rouges)

Merci bcp à vous si vous pouviez m'aider...

Cordialement
Camille_nourriture.xlsx
(22.37 Kio) Téléchargé 13 fois
f
frangy
Passionné d'Excel
Passionné d'Excel
Messages : 4'337
Appréciation reçue : 1
Inscrit le : 19 novembre 2012
Version d'Excel : 2007 FR

Message par frangy » 21 novembre 2013, 19:38

Bonjour,

Une solution avec VBA.
Le contrôle des quantités journalières est réalisé systématiquement à chaque modification des quantités de lait ou aliments.
Camille_nourriture.xlsm
(28.8 Kio) Téléchargé 24 fois
A+
M
Marcelkader
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 21 novembre 2013
Version d'Excel : 2010 FR

Message par Marcelkader » 22 novembre 2013, 15:07

Excellent, c'est pourquoi je me suis permis de t'écrire en privé, j'espère que tu ne m'en veux pas trop car j'aimerais tant comprendre...
C'est génial, exactement ce que je cherchais.

BRAVO à TOI pour ton excellent niveau!!!
f
frangy
Passionné d'Excel
Passionné d'Excel
Messages : 4'337
Appréciation reçue : 1
Inscrit le : 19 novembre 2012
Version d'Excel : 2007 FR

Message par frangy » 22 novembre 2013, 16:52

Bonjour,

Quelques explications sur le traitement proposé.
Le code est placé dans le module de la feuille concernée, à savoir "Déc 2013".
On utilise l’évènement Change de la feuille qui permet de détecter une modification dans la plage où sont notées les quantités de lait ou d’aliments.

Lorsqu’une modification est détectée dans cette plage:
On parcourt la plage qui contient les quantités journalières (de F2 à F125).
Pour chaque cellule de la plage, on vérifie si sa valeur est numérique et si cette dernière est supérieure à 900.
Si c’est le cas, on recherche la première cellule vide dans la plage de résultats L26:N29 et on note la date.
J’ai crée 2 plages nommées :
TropManger qui correspond à la plage L26:N29 dans laquelle sont notées les dates où la quantité journalière est> 900.
QuantitéJ qui correspond à la plage qui contient les quantités journalières (F2:F125).

Voici le code commenté
Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range, Cel As Range
    'Si la plage modifiée concerne plusieurs cellules, on sort de la procédure
    If Target.Count <> 1 Then Exit Sub
    'Si la cellule modifiée est dans la plage C2:D125, on autorise le traitement qui suit
    If Not Application.Intersect(Target, Range("C2:D125")) Is Nothing Then
        'On désactive l'évènement pour éviter de reboucler sur la procédure à chaque changement dans une cellule
        Application.EnableEvents = False
        'On efface la plage L26:N29 dans laquelle sont notées les dates où la quantité journalière est > 900
        Range("TropManger").ClearContents
        'On balaye la plage qui contient les quantités journalières (F2:F125)
        For Each C In Range("QuantitéJ")
            'Si la valeur de la cellule est numérique et > 900
            If IsNumeric(C) And C > 900 Then
                'alors, on recherche la première cellule vide dans la plage de résultats et on note la date
                For Each Cel In Range("TropManger")	
                    If Cel = "" Then
                        Cel = Cells(C.Row, 1)
                        Exit For
                    End If
                Next Cel
            End If
        Next C
        'On re-active l'évènement
        Application.EnableEvents = True
    End If
End Sub
A+
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message