Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion cibleo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

cibleo

XLDnaute Impliqué
Bonsoir le forum,

Le code que je vous présente a été créé il y quelques mois par Gael, il fonctionne à merveille.

Il est associé au bouton noir dans la feuille "Recherche" et me permet de rechercher un mot dans la colonne C de toutes les feuilles "Encais..." et d'en reporter les lignes correspondantes. (le fichier est allégé, l'original comporte 12 feuilles "Encais").

Aujourd'hui, je fais appel à votre aide pour décliner ce code (Bouton orange) afin d'effectuer une autre recherche qui doit désormais s'effectuer en colonne A à partir d'un jour (ex : lundi) que je saisis dans la textbox1.

Par rapport au code initial, voici ce que j'ai essayé de changer :
Code:
With plage
      Set Cel = .Find([B][COLOR=red]CDate[/COLOR][/B](Me.TextBox1), LookAt:=xlPart)
à la place de :

Code:
With plage
      Set Cel = .Find(VSearch, LookAt:=xlPart)

Mais là, cela ne marche pas, j'ai une erreur.

Les lignes dont les dates correspondent à des lundis figurant dans mes feuilles "Encais..." ne s'affichent pas.

Par contre, si je saisis 39839, il m'affiche bien les lignes concernant le lundi 26 janvier 2009.

Le code à modifier est dans le formulaire "Rechercher".
Les dates figurant en colonne A des feuilles "Encais..." sont au format jjj jj mmm aa.

Faut-il aussi changer la variable :

Code:
Dim VSearch As String
et l'instrucion suivante :
Code:
VSearch = Me.TextBox1.Value

J'ai aussi songé à utiliser "Weekday" et "WeekdayName" pour parvenir à mes fins, mais je dois m'égarer.

Pouvez-vous me venir en aide, je patauge 😱

Amicalement Cibleo
 

Pièces jointes

Re : Cdate

Bonjour Pierrot93,
Bonjour à tous,

Merci pour ta réponse mais cela ne fonctionne pas.

J'ai l'impression que mon problème est difficile à résoudre, je n'ai pas trouvé de questions similaires à mon cas sur le forum, pourtant j'ai cherché 🙁

Reprenons la problématique :

Je ne cherche pas une valeur mais le nom d'un jour dans la colonne A de mes feuilles "Encais" ----> ex : Lundi

Mais la colonne A contient des dates au format numérique "jjj jj mmm aa"

Toutes les dates dont les jours sont des Lundis doivent alors s'afficher dans ma feuille "Recherche".

Comment contourner le problème avec cette méthode Find, dois-je paramétrer tous ses arguments pour parvenir à mes fins ?

Merci de m'aiguiller.

Cibleo
 
Re : Cdate

Re Pierrot93,

Merci de te pencher à nouveau sur mon cas.

J'ai remplacé l'instruction ci-dessous par la tienne et j'ai un incompatiblité de type 13 😕

Avec ---> Dim VSearch As String

Code:
Set Cel = .Find(CDate(Me.TextBox1), LookAt:=xlPart)

Faut-il modifier d'autres instructions comme je l'indiquais initialement ?

Si je rentre dans la textbox 39839, il m'affiche bien toutes les lignes du lundi 26 janvier 2009, mais si je rentre le mot "lundi", j'ai cette erreur 😱 et aucune lignes concernant tous les lundis ne s'affichent.

Peux tu me confirmer si cela marche vraiment chez toi, j'ai un doute !

Amicalement Cibleo
 
Re : Cdate

Re

la fonction "cdate" fait une conversion en date du contenu de ta "textbox", donc forcement si tu rentres "lundi" comme valeur tu vas provoquer une erreur. Quand je disais chez moi cela fonctionne, je rentrais une date dans la "textbox" bien formatée, comme ceci :

Code:
12/01/2009

@+
 
Re : Cdate

Re,

pour une date renseignée :
Code:
10/08/2009
et formatée :
Code:
lundi 10 août 2009

le code ci-dessous me renvoie bien la bonne cellule.

Code:
Set x = Range("A:A").Find("lundi", , xlValues, xlPart, , , False)

@+
 
Re : Cdate

Re Pierrot93,

J'avoue que ma demande n'était pas très claire et d'après mes recherches, je crois que pris de cette manière mon cas doit-être insoluble.

Pour contourner le problème, il faudrait peut-être dans un premier temps extraire le jour des dates de la colonne A et les placer en colonne I (par exemple) puis simplement effectuer la recherche sur la colonne I.

Il me semble que ce serait la meilleure solution.

Mais suffit pour ce soir, je ne t'embête plus sauf si tu trouves la solution miracle.

Bonne soirée Pierrot93 😉
 
Re : Cdate

Re Pierrot,

Je m'exprime vraiment mal Pierrot, c'est tout moi 🙄

Je te fais cogiter pour de rien 😱

Dans la textbox, je renseigne seulement un jour (Vendredi par exemple) et non pas une date précise.

Et j'aimerais voir s'afficher les lignes du vend 02 janv 09, vend 09, vend 16, vend 23 , vend 30 etc... jusqu'à la fin de l'année puisque le code balaye mes 12 feuilles de l'année 2009 dans mon fichier initial.

A plus Cibleo
 
Re : Cdate

RE

oui... mais attention tes dates sont formatées "ven" et non "vendredi".... mais testes la dernière ligne du code proposée, en renseignant "ven" dans la "textbox", tu verras bien le résultat.

@+
 
Re : Cdate

Bonjour à tous,
Bonjour Pierrot,

Pierrot cela ne marche pas.

Mais je vais essayer de contourner le problème en procédant en 2 temps 🙂

Comme je vous l'expliquais précédemment, j'ai beaucoup de difficultés avec la syntaxe de la méthode FIND.

J'illustre à nouveau en vous renvoyant mon fichier.

Code:
Private Sub CommandButton1_Click()
  Dim VSearch As String
  Dim plage As Range, Cel As Range, Adrdeb As String
  Dim Pos As Integer, Mois As Integer
  Dim Valmois(12, 3) As Single, Nbmois(12, 3) As Integer
  Application.EnableEvents = False
  Application.ScreenUpdating = False
 
  ShtR.[H1].Value = TextBox1.Value
  If TextBox1.Value = "" Then Exit Sub
 
  VSearch = Me.TextBox1.Value
  DerLiR = 1
  For Each Ws In ThisWorkbook.Worksheets
    With Ws
      DerLiS = .Range("a65536").End(xlUp).Row
      [B]If Left(.Name, 6) = "Encais" Then[/B]
    [COLOR=red][B]Set plage = .Range("h1:h" & DerLiS)[/B][/COLOR]
 
    With plage
    [COLOR=blue][B]Set Cel = .Find(VSearch, LookAt:=xlPart)[/B][/COLOR]
[COLOR=black]..........[/COLOR]

Je reprends mes explications :

Dans les feuilles "Encais..." en colonne H, j'ai saisi manuellement les jours de la semaine qui correspondent à la colonne A.

Dans le code (instructions en rouge ci-dessus), ma recherche se fait désormais en colonne H et cela fonctionne, j'obtiens le résultat initialement escompté. 🙂

En colonne I, je n'ai pas fait de saisi manuelle, mais inséré une formule qui extrait le jour au format texte ---->=TEXTE(A2;"jjjj")

Si je remplace l'instruction suivante :
Code:
Set plage = .Range("h1:h" & DerLiS)
Par :
Code:
Set plage = .Range("i1:i" & DerLiS)

Je dois aussi modifier le Find puiqu'en colonne I figurent des formules et ma recherche ne fonctionne plus 😎
Code:
Set Cel = .Find(VSearch, LookAt:=xlPart)

Comment rectifier de nouveau le FIND ?

Merci de votre aide Cibleo

Je cours au travail, à plus
 

Pièces jointes

Re : Cdate

Bonjour Cibleo

il faut indiquer les arguments comme suit :

Code:
Set x = Range("I:I").Find("lundi", , [B]xlValues[/B], xlPart, , , False)
cette ligne de code merenvoie bien la cellule I10...

cf aide vba

bon après midi
@+
 
Re : Cdate

Bonsoir à tous,
Bonsoir Pierrot,

Finalement, j'ai mis ceci avec la recherche en colonne I où les noms des jours sont extraits de la colonne A à l'aide d'une formule.
Cela fonctionne. 🙂

Code:
Set Cel = .Find(VSearch, , xlValues, xlWhole, , , False)

J'ai remplacé xlPart par xlWhole, ce qui m'oblige à saisir le nom du jour en entier (lundi au lieu de lun).

Je commence un peu à comprendre le sens de tous ces arguments 🙄

Merci Pierrot pour toutes tes explications et ce temps consacré.

Au plaisir Cibleo

Ps : sinon si quelqu'un trouvait la solution en effectuant la recherche directement en colonne A où figurent mes dates au format numérique, qu'il se manifeste 😉
 
Re : Cdate

Bonjour Cibleo

un petit exemple avec une boucle, permettant de comparer le nom complet d'une journée, au contenu de ta colonne A, vois si cela peut t'être utilile :

Code:
Sub test()
Dim c As Range, j As String
j = InputBox("quel jour recherchez-vous ?" & vbLf _
    & "le saisir en entier, exemple :   vendredi")
If j = "" Then Exit Sub
For Each c In Range("A2:A" & Range("A65536").End(xlUp).Row)
    If LCase(j) = WeekdayName(Weekday(c.Value, vbMonday)) Then MsgBox c.Address
Next c
End Sub

bonne journée
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
902
Réponses
3
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…