utiliser coordonnées .adress

yann17

XLDnaute Nouveau
Bonjour à tous,

quelqu'un a-t-il une solution pour utiliser dans un Range les coordonnées trouvées par :

PlageCel = Sheets("attachement").Range(DateTrouve, DateTrouve.End(xlDown)).Address

Si je les affiche dans un msgbox, ce sont bien les coordonnées que je recherche, mais cela ne fonctionne pas lorsque je l'utilise dans un Range :

With Sheets("attachement").Range(PlageCel)
Set EQM1Trouve = .Find(EQM1, , xlValues, xlWhole)
......
......

Je pense que cela doit être faisable, mais là...

Merci d'avance
 

fhoest

XLDnaute Accro
Re : utiliser coordonnées .adress

Bonsoir,
Voici un peu de modif sur ton code pour toi t'en sortir un peu:
Code:
Sub Cherche_date()
Dim DateCherche
Dim DateTrouve As String
Dim PlageCel As String
    
'recherche date feuille active sur feuille attachement
DateCherche = Format(ActiveSheet.Range("G4").Value, "dddd d mmmm yyyy")                             'cherche la date
 DateTrouve = Sheets("attachement").Range("K1:N1").Find(DateCherche, , xlValues, xlWhole).Address
    If DateTrouve <> "" Then          'si date trouve selectionne cellule
        Sheets("attachement").Select
        Range(DateTrouve).Select
        
   End If
    
End Sub
Code:
Sub Recherche_noms()

SAV_FActive           'sav nom feuille active

Dim EQM1Trouve As Long, EQM2Trouve As Long, EQM3Trouve As Long, EQM4Trouve As Long, EQM5Trouve As Long

Dim EQM1, EQM2, EQM3, EQM4, EQM5

EQM1 = Sheets(FActive).Range("B6").Value
EQM2 = Sheets(FActive).Range("C6").Value
EQM3 = Sheets(FActive).Range("D6").Value
EQM4 = Sheets(FActive).Range("E6").Value
EQM5 = Sheets(FActive).Range("F6").Value

Application.ScreenUpdating = False

Cherche_date
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'recherche equipe matin 1
If EQM1 = "" Then
    Sheets(FActive).Range("B12").Value = ""
Else
On Error Resume Next
EQM1Trouve = Selection.Find(EQM1, , xlValues, xlWhole).Row
On Error GoTo 0
    If EQM1Trouve <> 0 Then
        Sheets(FActive).Range("B12").Value = Cells(EQM1Trouve, "J").Value
    Else
        Sheets(FActive).Range("B12").Value = "?"
    End If
End If
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'recherche equipe matin 2
If EQM2 = "" Then
    Sheets(FActive).Range("B13").Value = ""
Else
On Error Resume Next
EQM2Trouve = Selection.Find(EQM2, , xlValue, xlWhole).Row
On Error GoTo 0
    If EQM2Trouve <> 0 Then
        Sheets(FActive).Range("B13").Value = Cells(EQM2Trouve, "J").Value
    Else
        Sheets(FActive).Range("B13").Value = "?"
    End If
    
End If
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'recherche equipe matin 3
If EQM3 = "" Then
    Sheets(FActive).Range("B14").Value = ""
Else
On Error Resume Next
EQM3Trouve = Selection.Find(EQM3, , xlValue, xlWhole).Row
On Error GoTo 0
    If EQM3Trouve <> 0 Then
        Sheets(FActive).Range("B14").Value = Cells(EQM3Trouve, "J").Value
    Else
        Sheets(FActive).Range("B14").Value = "?"
    End If
    
End If
    
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'recherche equipe matin 4
If EQM4 = "" Then
    Sheets(FActive).Range("B15").Value = ""
Else
On Error Resume Next
 EQM4Trouve = Selection.Find(EQM4, , xlValue, xlWhole).Row
On Error GoTo 0
    If EQM4Trouve <> 0 Then
        Sheets(FActive).Range("B15").Value = Cells(EQM4Trouve, "J").Value
    Else
        Sheets(FActive).Range("B15").Value = "?"
    End If
    
End If
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'recherche equipe matin 5
If EQM5 = "" Then
    Sheets(FActive).Range("B16").Value = ""
Else
On Error Resume Next
EQM5Trouve = Selection.Find(EQM5, , xlValue, xlWhole).Row
On Error GoTo 0
    If EQM5Trouve <> 0 Then
        Sheets(FActive).Range("B16").Value = Cells(EQM5Trouve, "J").Value
    Else
        Sheets(FActive).Range("B16").Value = "?"
    End If
    
End If

Retour_FActive
End Sub
A+
 

Docmarti

XLDnaute Occasionnel
Re : utiliser coordonnées .adress

Bonjour.

Je ne connaissais pas la fonction FIND à 3 arguments qui fait une recherche dans un STRING, soit l'équivalent de Instr.

Mais je connais bien la fonction FIND à 8 arguments qui fait une recherche dans un range.

Voici un démo qui illustre et explique pourquoi FIND peut ne pas trouver une date pourtant bien présente dans le range.
Et qui donne une solution et une seule pour que FIND avec XlValues trouve une date à coup sûr.

Cordialement

Docmarti
 

Pièces jointes

  • Demo_Find_xlValues_par_Docmarti_003.xlsm
    23.4 KB · Affichages: 30

yann17

XLDnaute Nouveau
Re : utiliser coordonnées .adress

Bonsoir,

désolé si je tarde à répondre, mais beaucoup de boulot en ce moment et plus assez de temps pour mettre le nez dans le vba :(.

Fhoest : merci pour ton code. Je ne vois pas de changement dans le résultat, mais si tu dis que c'est mieux écrit, c'est surement vrai vu mon niveau :eek:.

Docmarti : merci pour ton fichier, c'est très clair et cela m'a éclairer sur certains points. Mais dans mon fichier l'erreur ne se trouve pas dans la recherche de la date, qui se fait correctement. L'erreur se situe dans le find suivant (macro recherche_nuit). La recherche se fait mais ne trouve aucun résultat, et donc me donne une valeur vide aux cellules de destination. Lorsque je fais un msgbox, la valeur de "plagecel" semble correcte. Je ne comprend donc pas ce qui cloche.

Voici la partie du code où doit se trouver une erreur :

Code:
With Sheets("attachement").Range(PlageCel)
Set FNUITTrouve = .Find(FNUIT, , xlValues, xlWhole)

    If Not FNUITTrouve Is Nothing Then
        FirstAddress = FNUITTrouve.Address
        Sheets(FActive).Range("B17").Value = Cells(FNUITTrouve.Row, "J").Value
        Sheets(FActive).Range("B17").select
    Do
    
    Set FNUITTrouve = .FindNext(FNUITTrouve)
    
    Selection.Offset(1, 0).Select
    ActiveCell.Value = Cells(FNUITTrouve.Row, "J").Value

    Loop While Not FNUITTrouve Is Nothing And FNUITTrouve.Address <> FirstAddress
    End If
    
End With

Merci d'avance.

Yann
 

Docmarti

XLDnaute Occasionnel
Re : utiliser coordonnées .adress

Dans le code suivant, tu indiques l'adresse avec Cells(), mais tu ne précises pas le nom de la feuille. Alors il s'agit de la feuille active, c'est-à-dire n'importe quoi.
Code:
ActiveCell.Value =  Cells(FNUITTrouve.Row, "J").Value

Mieux vaut toujours faire précéder le range de l'objet Worksheet où il se trouve (auquel il appartient).
Code:
ActiveCell.Value = FNUITTrouve.Parent.Cells(FNUITTrouve.Row, "J").Value

ou
Code:
set wf = thisworkbook.Worksheets("attachement")
ActiveCell.Value =wf.Cells(FNUITTrouve.Row, "J").Value
 

yann17

XLDnaute Nouveau
Re : utiliser coordonnées .adress

Bonjour Docmarti,

Merci beaucoup, c'était tellement évident qu'en bon noob que je suis je ne l'ai pas vu...:eek:
En revanche peux tu m'expliquer pourquoi la première valeur trouvée (celle qui devrait se retrouver en B17 de la feuille active), se retrouve en dernier. Ce n'est pas très grave pour la finalité de mon fichier, mais je ne l'explique pas.

Encore merci
 

Docmarti

XLDnaute Occasionnel
Re : utiliser coordonnées .adress

Bonjour Docmarti,

Merci beaucoup, c'était tellement évident qu'en bon noob que je suis je ne l'ai pas vu...:eek:
En revanche peux tu m'expliquer pourquoi la première valeur trouvée (celle qui devrait se retrouver en B17 de la feuille active), se retrouve en dernier. Ce n'est pas très grave pour la finalité de mon fichier, mais je ne l'explique pas.

Encore merci

Parce que le résultat du .FindNext doit être pris en compte avant le .FindNext et non après sinon le dernier résultat sera la répétition du premier .Find

Code:
Do
     ActiveCell.Value = FNUITTrouve.Parent.Cells(FNUITTrouve.Row, "J").Value
   
    Set FNUITTrouve = .FindNext(FNUITTrouve)
    
     Selection.Offset(1, 0).Select
    
    Loop While Not FNUITTrouve Is Nothing And FNUITTrouve.Address <> FirstAddress
 

Discussions similaires

Réponses
2
Affichages
176
Réponses
28
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz