Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[Résolu] Find et donnée absente

dancar

XLDnaute Junior
Bonsoir à tous,

La portion de code suivante ne fonctionne pas si "00:00" est absent de la recherche

Dim Trouve As Date
FinCol = [E4].End(xlDown).Address 'Fin colonne E

'On recherche le premier 00:00
Trouve = "00:00"
Cible = Range("E4:" & FinCol).Find(What:=Trouve, lookat:=xlWhole).Offset(-1, 1).Address
'On supprime les dates en trop
Range("D4:" & Cible).Delete Shift:=xlUp

J'ai trouvé une solution à ma portée avec des On Error GoTo mais ça ne me plait pas et rallonge beaucoup le code.
Je préférerai quelque chose du genre (que j'ai trouvé dans ce forum) mais que je n'arrive pas à adapter à mon code :

Sub Recherche_3()
Dim TROUVE As Range, Quoi As Range, f As Worksheet
Set Quoi = ActiveCell: Set f = Sheets("Feuille")
Set TROUVE = f.Cells.Find(Quoi.Value, f.[G1], -4163, 1, 1, 1, , False)
If TROUVE Is Nothing Then
MsgBox "Valeur non trouvée!", vbInformation
Exit Sub
Else
f.Activate: TROUVE.Select
End If
End Sub


Votre aide sera la bienvenue.

Bien à vous
Christian
 

chris

XLDnaute Barbatruc
Bonjour

Code:
Dim Cible as range
Trouve = "00:00"
Set Cible = Range("E4:" & FinCol).Find(What:=Trouve, lookat:=xlWhole).Offset(-1, 1)
If not cible is nothing then
Range("D4:" & Cible.address).Delete Shift:=xlUp
....
 

chris

XLDnaute Barbatruc
BOnjour

J’avais zappé ton offset
Code:
Dim Cible As Range
Trouve = "00:00"
Set Cible = Range("E4:" & FinCol).Find(What:=Trouve, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cible Is Nothing Then
   Range("D4:" & Cible.Offset(-1, 1).Address).Delete Shift:=xlUp
End If
fonctionne chez moi
 

dancar

XLDnaute Junior
Chez moi fonctionne oui et non , effectivement si 00:00 n'existe pas je n'ai plus de message d'erreur mais si 00:00 existe il ne le "voit" pas et zap cette partie Range("D4:" & Cible.Offset(-1, 1).Address).Delete Shift:=xlUp .
 

job75

XLDnaute Barbatruc
Bonjour dancar, chris, le forum,
mais si 00:00 existe il ne le "voit" pas
Il y a sans doute des secondes (non affichées) dans vos heures, pour les ignorer ajoutez un astérisque :
Code:
Trouve = "00:00*"
Edit : mais normalement si vous mettez bien LookIn:=xlValues ce n'est pas nécessaire.

Bonne journée.
 
Dernière édition:

dancar

XLDnaute Junior
Les secondes sont bien à 00. Pour que ça fonctionne il faut absolument que le mette les heures au format 00:00:00 (ce que je ne veut pas), LookIn:=xlValues n'est pas indispensable et je doit supprimer Dim Trouve As Date du coup plus besoin de Trouve = "00:00*" , je mets directement Find(What:="00:00:00".
Solution : peut être mettre les heures au format 00:00:00 le temps d'exécuter le code et rétablir le format 00:00 à la fin.
Merci de ton aide
 

Discussions similaires

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