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 SubCdlt
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.
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
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