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

Merci JBOBO. Le calcul du numéro de semaine ne pose pas de problème. C'est le fait de trouver dans la deuxième ligne l'adresse de la cellule ayant le bon numéro de semaine et la bonne année pour une date dd/mm/yyyy
 

MJ13

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

Bonjour MelleDaria, Jbobo

Tu peux aller voir ce lien:

https://www.excel-downloads.com/threads/xl2007-probleme-avec-no-semaine.130516/

En fait c'est un peu à côté de la plaque, je pensais que c'était pour avoir le numéro de semaine. Donc lien pas utile :eek:.

Sinon teste ce code:

Code:
Cells.Find(What:=Date, LookIn:=xlFormulas, LookAt:=xlPart).Offset(1, 0).Select
 
Dernière édition:

MlleDaria

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

Bonjour Michel,

Je te remercie pour cette réponse, mais elle ne résout pas mon problème :) :
1- Cette solution ne recherche que la date. Or, j'ai besoin qu'elle cherche le numéro de semaine et l'année correspondant à une date dt.
2- Cette solution alourdit le code car tu sélectionnes à chaque fois la cellule trouvée (celle à côté).

Avez-vous d'autres idées ?

Voici l'algorithme en pseudo VBA qui répond à mon besoin mais que j'arrive pas à traduire:

Variable
- dt une date format dd/mm/YY
- wk= Numero de semaine (dt)
- y= année (dt)

Tableau
Ligne 1 (année): 2010|2010|2010|2010|...|2011|2011|2011|
Ligne 2 (numéro de semaine): 1 | 2| 3| 4|....|1 | 2 | 3 |

Opération

dt=12/1/2011
wk= 2
y=2011

Trouve l'adresse de la cellule sur la ligne 2 tel que :
Numéro de semaine = 2
et cellule au-dessus(année) = 2011
 

MJ13

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

Re

Désolé, mais je ne comprend pas trop ce que tu veux faire, je laisse la main :eek:.

Un conseil pour ce genre de question, il faut que le fichier soit de type béton, c'est à dire que l'on comprenne tout de suite ce que tu attends en cliquant sur un bouton par exemple.

Sache que 50 % des questions ne trouvent pas de réponses car soit, on n'a pas de fichier, soit le problème est mal exposé dans le fichier ou que ce dernier est trop complexe.

Bon courage :).
 

MlleDaria

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

J'ai essayé ce code, mais çe ne fonctionne pas. je ne vois pas mon erreur:

Private Sub wk2()

Sheets("Sheet1").Activate

Dim i As Integer
Dim y1 as Integer
Dim y11 as Integer

y1 = 20 'numéro de semaine
y11 = 2011 'numéro de l'année

i = 3 'On commence à chercher à partir de la 3ème colonne

While Sheets("Sheet1").Cells(2, i) <> y1 And Sheets("Sheet1").Cells(1, i) <> y11 ' Or Cells(2, i) <> "")
i = i + 1
Wend

If Cells(2, i) = "" Then
MsgBox ("Merci de créer la semaine")
Else: MsgBox (y1 & "_" & y11 & " _ " & i)
End If


End Sub
 

MlleDaria

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

Ok. Je vois ce que tu veux dire. Je reposte le fichier.

Les macro que vous trouverez dans le classeur sont des tentatives de résolution mais aucune ne fonctionne.
 

Pièces jointes

  • wk.xlsm
    26.8 KB · Affichages: 76
  • wk.xlsm
    26.8 KB · Affichages: 81
  • wk.xlsm
    26.8 KB · Affichages: 83

Pierrot93

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

Bonjour Mlle, Michel:)

regarde ceci, le code s'applique à la cellule active :
Code:
Option Explicit
Sub test()
Dim s As Byte, y As Integer, c As Range
If Not IsDate(ActiveCell) Then Exit Sub
s = DatePart("ww", ActiveCell.Value, 2, 2)
y = Year(ActiveCell.Value)
Set c = Rows(1).Find(y, Range("A1"), xlValues, xlWhole, , , False)
If Not c Is Nothing Then
    Set c = Rows(2).Find(s, c.Offset(1, -1), xlValues, xlWhole, , , False)
    If Not c Is Nothing Then MsgBox c.Column
End If
End Sub

bon après midi
@+
 

flyonets44

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

Bonjour
tu fais une boucle sur toute les données contenues dans ta colonne de telle manière
qu'il te donne l'information pour chaque valeur
Sub test()
Dim K&
Dim Cll As Range
K = Cells(65536, 1).End(xlUp).Row
For Each Cll In Range("A1:a" & K)
'ton code de recherche

Next
End Sub
Cordialement
Flyonets
 

Pierrot93

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

Re, bonjour flyonets44

@flyonets44
pas sùr qu'un tel code fonctionne pour une recherche de colonne....
Code:
K = Cells(65536, 1).End(xlUp).Row
For Each Cll In Range("A1:a" & K)
utilise les balises "code" quand tu déposes des lignes de code sur le forum, plus facile à lire....
 

MlleDaria

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

Ah! c'est exactement ça! merci beaucoup pierrot93. Mais pourquoi ma boucle While n'était pas bonne ? en regardant de plus près, il semblerait que ma boucle ne tenait pas compte du "And". As-tu une idée sur ce point là ?
 

MlleDaria

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

Merci flyonets44. Cependant, le code ne fonctionnait. peux-tu me l'expliquer ? il y a certains points que je ne comprends pas, notamment :
- Que signifie la déclaration "Dim K&" ?
- A quoi correspondant "K" ?
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 332
Membres
103 188
dernier inscrit
evebar