Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 14/03/2010, 07h13   #1
Membre du Club
 
Inscription : juin 2008
Messages : 280
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 280
Points : 46
Points : 46
Par défaut Probleme de recherche avec .Find

Bonjour,
voila le soucis rencontré avec .find
Code :
1
2
3
Sub op()
 Range("g20:g22").Find("O1").Select
End Sub
sur la plage de cellules j'ai 3 valeurs "O1","2","O11"
je veux selectionner la cellule dont la valeur est "O1", et il me selectionne a chaque fois "O11"
si je change O11 en O12 idem
j'ai l'impression que la recherche se fait toujours de haut en bas, et des qu'il trouve les premiers caracteres, il s'arrete.

comment faire pour qu'il me selectionne la bonne cellule ???

Merci
djoumusic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2010, 08h18   #2
Membre Expert
 
Avatar de laetitia
 
Inscription : décembre 2002
Messages : 1 281
Détails du profil
Informations personnelles :
Âge : 21

Informations forums :
Inscription : décembre 2002
Messages : 1 281
Points : 1 363
Points : 1 363
bonjour djoumusic le forum essai comme cela

Code :
[g20:g22].Find("O1", LookIn:=xlValues, lookat:=xlWhole).Select
__________________
SALUTATIONS
laetitia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2010, 10h33   #3
Membre du Club
 
Inscription : juin 2008
Messages : 280
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 280
Points : 46
Points : 46
genial
djoumusic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2010, 11h03   #4
Membre du Club
 
Inscription : juin 2008
Messages : 280
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 280
Points : 46
Points : 46
juste une infos,
dans l'exemple, on parle d'une recherche d'un texte avec des " "
si je recherche une variable, en fait dans mon prgramme c'est le cas,
en ajoutant les infos que tu m'as donné, vba ne cherche rien,
voici mon ecriture...
il m'arrive même de rechercher la valeur i et ca coince..
Code :
hr1 = .Find(ch, LookIn:=xlValue).Offset(0, 1).Text
ch : etant une variable qui s'increment plus haut dans mon code,
hr1: une futur variable..
Merci
djoumusic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2010, 11h35   #5
Membre Expert
 
Avatar de laetitia
 
Inscription : décembre 2002
Messages : 1 281
Détails du profil
Informations personnelles :
Âge : 21

Informations forums :
Inscription : décembre 2002
Messages : 1 281
Points : 1 363
Points : 1 363
re, il faudrait voir ton code en entier pour savoir ce que tu cherche a faire exactement. pour eviter les selects..comme cela pas simple !!!

un exemple avec variable

Code :
1
2
3
4
5
6
7
Sub es()
   Dim ch As String, hr1 As Variant
   ch = "O1"
   [g20:g22].Find(ch, LookIn:=xlValues).Offset(0, 1).Select
   hr1 = Selection
   MsgBox hr1
End Sub
__________________
SALUTATIONS
laetitia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2010, 11h41   #6
Membre du Club
 
Inscription : juin 2008
Messages : 280
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 280
Points : 46
Points : 46
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
Sub extraregroupe()
'********************************************************
Application.ScreenUpdating = False
Dim zonestatut As Range
    Set zonestatut = Sheets("PLLIAISON").Range("c88:c157")
Dim zonecodehor As Range
    Set zonecodehor = Sheets("PLLIAISON").Range("ak87:an147")
Dim jourdumois As Range
    Set jourdumois = Sheets("PLLIAISON").Range("d87:ah87")
Dim lstperso As Range
    Set lstperso = Sheets("PLLIAISON").Range("b88:b157")
Dim debutTableau As Range
    Set debutTableau = Sheets("PLMP").Range("b5")
Dim zonemapower As Range
    Set zonemapower = debutTableau.Offset(1, 0).CurrentRegion
Dim zoneextratriee As Range
fin = Range("b6").End(xlDown).Row
    Set zoneextratriee = Range("b6:b" & fin)
Dim j As String
j = Sheets("PLMP").Range("d2").Value
Dim k As String
k = Sheets("PLMP").Range("f2").Value
Dim i As Integer
Dim retour As Integer
On Error GoTo erreur1
retour = -((k - j) * 4 + 4)
 
Dim afftot As Integer
afftot = 28 + retour
manpower = "MPOWER"
'********************************************************
ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources
TaMacro
eclaterLessemaines
 
'Efface le tableau avant de le creer
debutTableau.Select
debutTableau.CurrentRegion.ClearContents
 
'Regroupe les noms des extras
debutTableau.Offset(1, 0).Select
For Each cell In zonestatut
 If cell = manpower Then
 ActiveCell = cell.Offset(0, -1)
 ActiveCell.Offset(1, 0).Select
 End If
Next
 
'Ecriture des jours du mois
debutTableau.Offset(-1, 2).Select
With jourdumois
For i = j To k
If i = 1 Then
ActiveCell.Value = 1
GoTo suite:
End If
ActiveCell.Value = .Find(i)
suite:
ActiveCell.Offset(1, -1).Value = "Début"
ActiveCell.Offset(1, -1).Select
ActiveCell.Offset(0, 1).Value = "Fin"
ActiveCell.Offset(0, 2).Value = "Pause"
ActiveCell.Offset(0, 3).Value = "H.Trv"
ActiveCell.Offset(-1, 5).Select
Next i
Range("ae4").Value = "Total Hr.Trv / Semaine"
End With
 
'Ecrit les heures des extras suivant la semaine de selection
debutTableau.Offset(1, 1).Select
        For Each cell In zoneextratriee
        For i = j To k
        ch = lstperso.Find(cell).Offset(0, i + 1).Value
        If ch = "0" Then
        ch = ""
        ElseIf ch = "R" Then
        ch = ""
        ElseIf ch = "r" Then
        ch = ""
        End If
        With zonecodehor
        hr1 = .Find(ch).Offset(0, 1).Text
        hr2 = .Find(ch).Offset(0, 2).Text
        hr3 = .Find(ch).Offset(0, 3).Text
            If hr1 = "00:00" Then
            hr1 = ""
            hr2 = ""
            hr3 = ""
            End If
 
        End With
 
        ActiveCell.Value = hr1
        ActiveCell.Offset(0, 1) = hr2
        ActiveCell.Offset(0, 2) = hr3
        totheure = "=IF((RC[-2]-RC[-3]-RC[-1])=0,"""",(RC[-2]-RC[-3]-RC[-1]))"
        ActiveCell.Offset(0, 3).Select
        ActiveCell = totheure
        ActiveCell.NumberFormat = "hh:mm"
        ActiveCell = ActiveCell.Text
        ActiveCell.Offset(0, 1).Select
        Next i
                    If afftot <> 0 Then
                    retour = -28
                    ActiveCell.Offset(0, afftot).Select
                    End If
        ActiveCell.FormulaR1C1 = _
        "=RC[-1]+RC[-5]+RC[-9]+RC[-13]+RC[-17]+RC[-21]+RC[-25]"
        ActiveCell.NumberFormat = "[h]:mm;@"
        ActiveCell = ActiveCell.Text
 
        ActiveCell.Offset(1, retour).Select
        Next cell
 debutTableau.Offset(1, 1).Select
 Application.ScreenUpdating = True
erreur1:
Exit Sub
End Sub
y a tout... mais des fois ca aide a comprendre,
y a des references a des zone de selection partout... je sais,
je ne suis pas arrivé a faire mieux pour le moment,
mais ca marche sauf, ces petits details de recherche.. qui m'empeche d'ecrire O1 et O11 SI JE VEUX LES RECHERCHER je fais O1 ET O2, et je detourne le probleme,
mais c'est pas une solution, et si on peut apprendre...
tant mieux,
cdt
djoumusic est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 04h04.


 
 
 
 
Partenaires

Hébergement Web