VBA- Trouver une cellule qui répond à 2 conditions

MlleDaria

XLDnaute Nouveau
Bonjour tout le monde,

Je me permets de solliciter votre aide sur un sujet qui semble simple mais dont je n'arrive pas à me défaire:
J'ai un tableau à 2 lignes
La ligne 1 contient l'année (répétée autant de fois qu'il y a de semaines)
la ligne 2 contient le numéro de semaine (de 1 à 52)

j'ai une date dd/mm/yyyy. je souhaite qu'il me trouve l'adresse de la cellule contenant la semaine correspondant à cette date (en prenant en compte l'année). Le problème c'est que lorsque 2 années se suivent (le numéro de semaines apparait donc 2 fois), il ne me donne que l'adresse de la première cellule sans tenir compte de l'année.
Avez-vous une idée de comment je peux résoudre ce problème sans qu'il consomme beaucoup ?
je pensais à un find (mais impossible de mettre 2 conditions) ou un while.

En vous remerciant pour votre aide.

Cordialement,

D.
 

Pièces jointes

  • wk.xlsm
    22.4 KB · Affichages: 85
  • wk.xlsm
    22.4 KB · Affichages: 89
  • wk.xlsm
    22.4 KB · Affichages: 92
Dernière édition:

MlleDaria

XLDnaute Nouveau
Re : VBA- Trouver une cellule qui répond à 2 conditions

Pierrot93,
encore une question s'il te plait:
Que signifie le la ligne Set c = Rows(1).Find(y, Range("A1"), xlValues, xlWhole, , , False) ?
"c" est une cellule. Mais que signifie la partie "Rows(1). "?
 

Pierrot93

XLDnaute Barbatruc
Re : VBA- Trouver une cellule qui répond à 2 conditions

Re,

"rows(1)" est la ligne ou s'effectue la recherche (utilisation de la méthode Find). "Set C" permet d'initialiser la varable par le résultat de la echerche... Evite une erreur au cas où le recherche n'aboutisse pas...je t'invite à consulter l'aide vba sur la méthode "find" et tous ses arguments, touche de fonction F1 dans l'éditeur vba une fois positionné sur le mot en question....
 

MJ13

XLDnaute Barbatruc
Re : [RESOLU]VBA- Trouver une cellule qui répond à 2 conditions

Bonjour à tous

J'ai repris le code de Pierrot :) dans le module2, j'ai ajouté 2 macros en sélectionnant les dates avec les colonnes à trouver. La première avec des select et la seconde sa transcription sans les select :eek:.
 

Pièces jointes

  • wkbis.xls
    65.5 KB · Affichages: 74

MlleDaria

XLDnaute Nouveau
Re : [RESOLU]VBA- Trouver une cellule qui répond à 2 conditions

Merci MJ13. Je vais regarder.

A vrai dire, même si la méthode de pierrot (et je l'en remercie) semblait résoudre mon problème. Il n'y certains cas qu'elle ne peut adresser.
En effet, sa méthode part du principe que la numéro de semaine recherché (pour une année Y donnée) est forcément après la première occurence de l'année. Or c'est faux, si mon tableau ne contient qu'une partie de l'année (ex: pour 2010, de semaine 30 à 52) et que je cherche la week 10 de l'année 2010 => l'algo va regarder la première occurence de 2010, il regarde ensuite cellule en dessous(correspondant à la week) qui sera "30" => ça ne correspond pas à la semaine que je cherche. il va alors passer à la cellule d'après .. etc jusqu'à trouver semaine 10, mais ça sera pour l'année 2011.

C'est pour cela que je pensais à un while:

Tableau
Ligne 1: Année
Ligne 2: Semaine

Constante:
wk: numéro de semaine recherché
y: année recherché

Variable
i: numéro de colonne

Tant que ( Cells(ligne1,i).value <> y et Cells(Ligne2,i) <> wk ou Cells(Ligne2,i) <> "" ( Condition d'arret de ma boucle)
Fait : i=i+1
Fin de la boucle

i => numéro de colonne correspondant au 2 critères ou à la première cellule vide.

Mais ça ne fonctionne pas.
 

Si...

XLDnaute Barbatruc
Re : VBA- Trouver une cellule qui répond à 2 conditions

Salut

à tester :
Code:
Private Sub Colonne()
    Dim dt As Date
    Dim n As Byte, col As Integer
    For n = 10 To 16 'ou autre
        dt = Range("F" & n).Value
        Range("G" & n) = DatePart("ww", dt, 2, 2)
        col = Rows(1).Find(Year(dt)).Column 'colonne de l'année
        Do Until Cells(2, col) = Range("G" & n)
            col = col + 1 'colonne finale
        Loop
       Range("H" & n).Value = col
    Next n
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 187
dernier inscrit
ebenhamel