Parcourir un tableau a la recherche d'un élément dans une colonne

bonjour,

pourriez-vous me guider sur une fonction générale pour parcourir toute les cellules d'une colonne a la recherche d'une valeur .

j'ai essayer ensuite de parcourir toute la ligne a la recherche de valeurs non nulle mais impossible

Sub Analyse_Besoin()

Set ws1 = Sheets("TBR") ' à adapter

dl1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row 'parcourir les ligne du tableau de bas en haut

dc1 = ws1.Cells(1, Columns.Count).End(xlToRight).Column 'parcourir pour trouver la der colonne de gauche a droite
encours = ""

For i = 3 To dl1
Réf = ws1.Cells(i, 1) ' definition de la varible référence en 3,1
Type_ = ws1.Cells(i, 3) ' definition de la varible type en 3,3

If encours <> Réf Then 'itialisation de la variable Réf
encours = Réf
colonne2 = 0
dcl = 4

End If

f Type_ = "plannifier" Then
Do While Cells(i, dcl).Value = 0 And dcl 'colonne < 300
'colonne = colonne + 1
dcl = dcl + 1
Valeur_planifier = Cells(i, dcl)
Loop
MsgBox (Valeur_planifier)
' If Valeur_planifier > Valeur_planifier Then
'
' End If

End If
Next i
End Sub

Bonjour,

Essayez ceci:

Sub Analyse_Besoin()
    Set ws1 = Sheets("TBR") ' à adapter
    dl1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row 'parcourir les ligne du tableau de bas en haut
    dc1 = ws1.Cells(1, Columns.Count).End(xlToLeft).Column 'parcourir pour trouver la der colonne de gauche a droite
    encours = ""
    For i = 3 To dl1
        Réf = ws1.Cells(i, 1) ' definition de la varible référence en 3,1
        Type_ = ws1.Cells(i, 3) ' definition de la varible type en 3,3
        If encours <> Réf Then 'initialisation de la variable Réf
            encours = Réf
            colonne2 = 0
            dc = 4
        End If

        If Type_ = "plannifier" Then
            Do While Cells(i, dc) = 0 And dc < dc1
                dc = dc + 1
                Valeur_planifier = Cells(i, dc)
            Loop
            MsgBox (Valeur_planifier)
            'If Valeur_planifier > Valeur_planifier Then
            '
            'End If
        End If
    Next i
End Sub

Cdlt

salut Arturo,

je n'ai pas réussi a adapter ton code

est-ce que cela te dérange de regarder mon fichier Excel la macro récupération_de_valeur

j'arrive a récupérer toutes les valeurs de toutes mes cellules non nulle les une après les autres.

maintenant il me manque le traitement une fois que j'ai la récupérer la première valeur j'aimerai aller dans la sheets "param" récupérer la valeur "type de besoin" associé a "qui"

Bonjour,

l'affichage de tous ces messages en cascade est vraiment pénible puisqu'il faut cliquer sur "OK" à chaque fois.

Je propose plutôt une feuille qui reçoit tous ces relevés en une seule fois.

J'ai créé la feuille "A_Planifier", il suffit de cliquer sur le bouton "Récupération des valeurs".

Pour chaque valeur récupérée, je relève la date de la planification accolée à la valeur trouvée (les 2 séparées par un tiret)

Pour la date de planification, j'ai pris celle de la ligne 3 de la feuille "TBR".

Merci de me dire si ça vous convient?

Cdlt

ok j'essaye d'adapter le code les "messages" dans la version définitive ne seront plus présent.

le but a la fin c'est de regarder le "planifier" en fonction du "besoin" sur une période qui elle est défini par le "type de besoin" qui est égal a un nombre de jour "jour".

je sais pas si c'est clair ?

Avec t'as solution je récupère quasiment toute les valeurs dont j'ai besoin c'est deja un grand pas pour moi.

du coup j'ai pas besoin de reporter les valeurs (d'où les messages) je doit comparer pour chaque planifier si le planifier est inf/sup ou égal au besoin sur la période

période définie en ligne 2 dans TBR .

si tu as la solution je suis preneur, je bosse sur ce que tu as fait en 1jour depuis 1semaine (cela en dis long sur mon niveau)

merci

Bonjour,

le but a la fin c'est de regarder le "planifier" en fonction du "besoin" sur une période qui elle est défini par le "type de besoin" qui est égal a un nombre de jour "jour".je sais pas si c'est clair ? Pas vraiment.

Alors comme je n'ai pas compris, j'ai quelque peu modifié le résultat, j'affiche dans la même cellule la date de la ligne 2, suivi de la date de la ligne 3 puis les valeurs trouvées supérieures à 0 du TBR avec un renvoi à la ligne pour séparer chaque élément. Est-ce que je m'approche de ce que vous espérez, sinon mettez des exemples du résultat attendu.

Cdlt

parcourir la colonne type = planifier

je regarde le planifier = 2 ( première valeur non nulle)

je regarde la Réf = maman , le type_de _besoin = WK

je regarde la date a laquelle le planifier est fait "03/05/2021" les dates -> ligne 2

une fois que j'ai récupérer les variables

a cette date j'y ajoute la période -> colonne "jours" pour WK = 7 jours ( les période sont fixes)

la période pour maman est de 7 jour donc 03/05/2021 aux 10/05/2021 (que des jour ouvrer si cela n'est pas possible )

une fois que j'ai cette période, je regarde la ligne besoin a cette période et je fait la somme.

Je regarde cette même période la somme de planifier.

ici le " besoin" pour "maman" est 0 -> 0 pour le 03/05/2021 et 0 pour le 10/05/2021

donc en conclusion si je compare le planifier par rapport au besoin sur la période je ne suis pas bon donc je met la case planifier en rouge

maman a planifier 2 séance alors qu'elle n'en a pas besoin entre le 03/05/2021 et le 10/05/2021

si je continue dans la lecture de planifier la prochaine valeur est 5 et le besoin sur la période = 2+3 donc la cellule 5 apparait en sans couleur.

Maintenant si le besoin est supérieur au planifier faire apparaitre la cellule besoin en jaune.

je met un deuxième exemple :

pour "papa" 1er cas ok somme planifier sur la période M 30 jours (6+6+6+6) = somme besoin sur la même période (12+12)

par contre plus loin somme planifier sur la période (12+12) > somme besoin sur la même période (12) donc les cellule planifier apparaisse en rouge

pour moi c'est clairement une épreuve toute ces données a gerer

Merci pour votre aide précieuse !

Bonjour,

C'est franchement pas clair du tout, si pour MAMAN, l'exemple m'a semblé compréhensible, pour PAPA ça ne l'est plus du tout. Moi, je vois une ribambelle de 6 dans le "plannifier" avec 0 besoins et vous faites une démonstration avec une association de 6 (pourquoi 4) puis ensuite des 12. Là, j'avoue ne pas comprendre la logique.

SI vous pouviez retourner le fichier avec les besoins pris en compte comme dans l'exemple ci-dessous, cela m'aiderait grandement.

fbr

Question: Quand on fait la recherche sur la ligne "Plannifier", quelle est la première colonne à prendre en compte ? La colonne D, E ?

Cdlt

bonjour Arturo83,

désolé pour la clarté du besoin je fait pourtant relire a une personne tierce mais avec moi a cote qui influence

image

du coup pour maman c'est ok

pour papa exemple 4 et 5 : j'ai entourer les périodes de 30jours

ex 4 : somme planifier (6+6+6+6) = sommes des besoins (12+12) sur la période on est bon

ex 5 : somme planifier (12+12) > somme des besoins (12) du coup les case sont colorer en rouge

il est important d'utiliser le notion de type_de_besoin et après les transformer en date. aujourd'hui dans ma macro je récupère le type mais je ne sais pas transformer les type. le compteur temps est aussi un mystère avec la variable "date"

pour la première colonne à prendre en compte je commencerai par la E si il faut modifier

je verrai plus tard si je prend en compte tout le retard, car dans ce cas la une notion de stock devra apparaitre :) c'est peut-être la prochaine étape.

Bonjour Arturo83,

dans ce nouveaux fichier joint j'ai réussi a récupérer les dates et faire je pense un range :).

est-ce que vous auriez une solution pour maintenant utilisé ce range afin de faire des sommes de "besoin" et "planifier"

deuxième point je ne sais pas pourquoi mais toute les date ne sont pas récupérer.

Bonjour,

Pour faire ce que vous demandez, votre fichier n'est pas gérable correctement dans l'état actuel.

En effet, la ligne 2 du tableau contient des dates mais, sur les 10 premières colonnes elles sont espacées d'une semaine puis, après on saute de mois en mois. Ce n'est pas possible de gérer ça correctement et efficacement. Il faut que vous revoyez la façon de faire avec un tableau bien structuré, avec des espacements de dates identiques.

Question: Est-il utile de programmer jusqu'en 2023?

Cdlt

je ne peux malheureusement pas modifier la donnée d'entrer mais avec votre méthode n'était pas possible de une fois la date deux créer prendre en compte uniquement le mois et l'année ?

est-ce possible que cela fonctionne comme ça ?

date1 = Cells(3, colonne)

date2 = DateAdd("d", compteur_jour, date1)
MsgBox (date2)
ReDim periode(1 To 2)
periode(1) = date1
periode(2) = date2

il me faut juste recherche la valeur de la date2

de façon a avoir une ligne "fixe 2" mais surtout une colonne

je penser chercher quelque chose dans le style ne regarder que le mois et l'année

Bon, puisque vous ne pouvez rien modifier, on va faire avec, donc voilà un premier jet, cliquez sur le bouton "Analyse du besoin"

Cdlt

merci pour le coup de main Arturo83, je bosse dessus cette semaine histoire d'adapté a mon besoin :).

je me permettrais de crier a l'aide si jamais :)

j'ai réussi a adapter ton code c'était top merci

Rechercher des sujets similaires à "parcourir tableau recherche element colonne"