je perd la valeur Findnext
Bonjour voilà mon code,
il y a un bloc qui est en "commentaire", c'est une boucle For au milieu d'une boule Do... while qui est elle meme dans un With...
lorsque je desactive le For J ma boucle tourne bien, et le findnext aussi,
lorsque j'essaie d'inserer la boucle For J, lorsque j'arrive a la valeur Findnext,
elle est a "0" ?? et je ne comprend pas pourquoi...?
y a un souci dans l'imbrication, je pense.. mais je vois pas... comment
ecrire
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
| Sub recupMpower()
Dim i As Integer
Dim j As Integer
'Dim tpsTrav As Range
Dim ws As Worksheet
Dim zoneMpower As Range
Dim codehor As Range
Dim ligne As Range
Set ligne = Range("d506").CurrentRegion
Worksheets("PARAMETRES").Activate
Range("D507").Select
If ActiveCell = "" Then
For i = 4 To Worksheets.Count
ActiveCell = Worksheets(i).Name
ActiveCell.Offset(1, 0).Select
Set zoneMpower = Worksheets(i).Range("E6:E75")
With zoneMpower
Set recupnom = .Find(M, LookIn:=xlValues)
If Not recupnom Is Nothing Then
firstAddress = recupnom.Address
Do
ActiveCell = recupnom.Offset(0, -1).Value
'c'est ce bloc qui semble bloqué....
' For j = 1 To 31
'tpsTrav = recupnom.Offset(0, j).Value
'Set codehor = Worksheets(i).Range("AN6:AN66")
'If tpsTrav = "R" Or tpsTrav = "r" Then
'GoTo erreur1
'End If
'With codehor
'hr = .Find(tpsTrav, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 4).Value
'End With
'If hr = 0 Then
'erreur1:
'hr = ""
'End If
'ActiveCell.Offset(0, j) = hr
' Next j
ActiveCell.Offset(1, 0).Select
' et la dessous recupnom qui a la valeur de la variable M, passe à 0 '??
Set recupnom = .FindNext(recupnom)
Loop While Not recupnom Is Nothing And recupnom.Address <> firstAddress
End If
End With
Next i |
Bonsoir djoumusic , le forum
une chose est sûre, l'intentation c'est pas ça. Et à partir de là il est difficile de lire les blocs d'instructions. Donc difficile de trouver des erreurs.
Queslques remarques :
- Refaire l'intentation correctement
- Que vaut le "M" dans
Code:
Set recupnom = .Find(M, LookIn:=xlValues)
- Remplace
Code:
If tpsTrav = "R" Or tpsTrav = "r" Then
par un truc du genre
Code:
If UCASE(tpsTrav) = "R" Then
C'est plus facile d'inverser la condition.
- Faire un "Find" puis un autre "Find" puis un "Find" du premier ! "Find" c'est comme utiliser CTRL + F.
ESVBA