Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change pas.
Au premier passage elle prend bien la bonne valeur mais à la boucle
d'après
elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où ça pêche.
Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier base.xls"
Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché, After:¬tiveCell,
_
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change pas.
Au premier passage elle prend bien la bonne valeur mais à la boucle
d'après
elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où ça pêche.
Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier base.xls"
Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché, After:¬tiveCell,
_
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change pas.
Au premier passage elle prend bien la bonne valeur mais à la boucle
d'après
elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où ça pêche.
Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier base.xls"
Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché, After:¬tiveCell,
_
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché, After:¬tiveCell,
_
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj = obj.
John
"Zanello" a écrit dans le message de
news:Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change pas.
Au premier passage elle prend bien la bonne valeur mais à la boucle
d'aprèselle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où ça
pêche.
Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier base.xls"
Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell,
_LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché, After:¬tiveCell,
_
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj = obj.
John
"Zanello" <info@zanello.fr> a écrit dans le message de
news:ejuxHhvQEHA.3140@TK2MSFTNGP11.phx.gbl...
Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change pas.
Au premier passage elle prend bien la bonne valeur mais à la boucle
d'après
elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où ça
pêche.
Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier base.xls"
Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell,
_
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché, After:¬tiveCell,
_
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj = obj.
John
"Zanello" a écrit dans le message de
news:Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change pas.
Au premier passage elle prend bien la bonne valeur mais à la boucle
d'aprèselle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où ça
pêche.
Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier base.xls"
Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell,
_LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai oublié de le
coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
"John Fuss" a écrit dans le message de news:
c91kn7$1d3$Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell,
_LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj = obj.
John
"Zanello" a écrit dans le message de
news:Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change pas.
Au premier passage elle prend bien la bonne valeur mais à la boucle
d'aprèselle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où ça
pêche.Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > > > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls"
Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell,_LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai oublié de le
coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
"John Fuss" <newskob650@yahoo.fr> a écrit dans le message de news:
c91kn7$1d3$1@s1.read.news.oleane.net...
Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell,
_
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj = obj.
John
"Zanello" <info@zanello.fr> a écrit dans le message de
news:ejuxHhvQEHA.3140@TK2MSFTNGP11.phx.gbl...
Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change pas.
Au premier passage elle prend bien la bonne valeur mais à la boucle
d'après
elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où ça
pêche.
Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > > > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls"
Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell,
_
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai oublié de le
coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
"John Fuss" a écrit dans le message de news:
c91kn7$1d3$Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell,
_LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj = obj.
John
"Zanello" a écrit dans le message de
news:Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change pas.
Au premier passage elle prend bien la bonne valeur mais à la boucle
d'aprèselle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où ça
pêche.Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > > > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls"
Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell,_LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Tu utilises on error resume next, ça vient peut-être de là, utilise
if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" a écrit dans le message de
news:C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai oublié de le
coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
"John Fuss" a écrit dans le message de news:
c91kn7$1d3$Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell,_LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj obj.
John
"Zanello" a écrit dans le message de
news:Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change pas.
Au premier passage elle prend bien la bonne valeur mais à la boucle
d'aprèselle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où ça
pêche.Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > > > > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls"Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell,_LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Tu utilises on error resume next, ça vient peut-être de là, utilise
if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" <info@zanello.fr> a écrit dans le message de
news:eTOuj1vQEHA.1276@TK2MSFTNGP11.phx.gbl...
C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai oublié de le
coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
"John Fuss" <newskob650@yahoo.fr> a écrit dans le message de news:
c91kn7$1d3$1@s1.read.news.oleane.net...
Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell,
_
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj obj.
John
"Zanello" <info@zanello.fr> a écrit dans le message de
news:ejuxHhvQEHA.3140@TK2MSFTNGP11.phx.gbl...
Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change pas.
Au premier passage elle prend bien la bonne valeur mais à la boucle
d'après
elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où ça
pêche.
Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > > > > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls"
Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell,
_
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Tu utilises on error resume next, ça vient peut-être de là, utilise
if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" a écrit dans le message de
news:C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai oublié de le
coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
"John Fuss" a écrit dans le message de news:
c91kn7$1d3$Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell,_LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj obj.
John
"Zanello" a écrit dans le message de
news:Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change pas.
Au premier passage elle prend bien la bonne valeur mais à la boucle
d'aprèselle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où ça
pêche.Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > > > > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls"Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell,_LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Aie
J'ai maintenant une erreur 424 : objet requis
quand il arrive sur
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes > Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") - 1)
last_cell = "C" & Right(lignes_chan, InStr(lignes_chan, ",") - 1)
Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
"John Fuss" a écrit dans le message de news:
c91mnp$2mq$Tu utilises on error resume next, ça vient peut-être de là, utilise
if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" a écrit dans le message de
news:C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai oublié
de le coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
"John Fuss" a écrit dans le message de news:
c91kn7$1d3$Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj
= obj.
John
"Zanello" a écrit dans le message de
news:Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change pas.
Au premier passage elle prend bien la bonne valeur mais à la
boucle d'après elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où
ça pêche. Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché >>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address) If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Aie
J'ai maintenant une erreur 424 : objet requis
quand il arrive sur
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes > Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") - 1)
last_cell = "C" & Right(lignes_chan, InStr(lignes_chan, ",") - 1)
Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
"John Fuss" <newskob650@yahoo.fr> a écrit dans le message de news:
c91mnp$2mq$1@s1.read.news.oleane.net...
Tu utilises on error resume next, ça vient peut-être de là, utilise
if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" <info@zanello.fr> a écrit dans le message de
news:eTOuj1vQEHA.1276@TK2MSFTNGP11.phx.gbl...
C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai oublié
de le coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
"John Fuss" <newskob650@yahoo.fr> a écrit dans le message de news:
c91kn7$1d3$1@s1.read.news.oleane.net...
Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj
= obj.
John
"Zanello" <info@zanello.fr> a écrit dans le message de
news:ejuxHhvQEHA.3140@TK2MSFTNGP11.phx.gbl...
Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change pas.
Au premier passage elle prend bien la bonne valeur mais à la
boucle d'après elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où
ça pêche. Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché >>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address) If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Aie
J'ai maintenant une erreur 424 : objet requis
quand il arrive sur
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes > Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") - 1)
last_cell = "C" & Right(lignes_chan, InStr(lignes_chan, ",") - 1)
Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
"John Fuss" a écrit dans le message de news:
c91mnp$2mq$Tu utilises on error resume next, ça vient peut-être de là, utilise
if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" a écrit dans le message de
news:C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai oublié
de le coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
"John Fuss" a écrit dans le message de news:
c91kn7$1d3$Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj
= obj.
John
"Zanello" a écrit dans le message de
news:Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change pas.
Au premier passage elle prend bien la bonne valeur mais à la
boucle d'après elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où
ça pêche. Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché >>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address) If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Bonjour,
Selon moi, il n'y pas de problème ;-)
Sauf que tu ouvres à chaque boucle le fichier ce qui doit provoquer une
erreur.
J'en déduis donc que tu as une gestion d'erreur qui n'est pas reproduite
dans ton extrait et que c'est cette gestion d'erreur qui provoque ce que
tu
décris.
Vérifie s'il y a une gestion d'erreur en amont et tiens moi au courant.
--
HTH
Paul V.
Zanello wrote:Aie
J'ai maintenant une erreur 424 : objet requis
quand il arrive sur
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes > > Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") - 1)
last_cell = "C" & Right(lignes_chan, InStr(lignes_chan, ",") - 1)
Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
"John Fuss" a écrit dans le message de news:
c91mnp$2mq$Tu utilises on error resume next, ça vient peut-être de là, utilise
if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" a écrit dans le message de
news:C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai oublié
de le coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
"John Fuss" a écrit dans le message de news:
c91kn7$1d3$Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj
= obj.
John
"Zanello" a écrit dans le message de
news:Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change pas.
Au premier passage elle prend bien la bonne valeur mais à la
boucle d'après elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où
ça pêche. Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > >>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address) If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Bonjour,
Selon moi, il n'y pas de problème ;-)
Sauf que tu ouvres à chaque boucle le fichier ce qui doit provoquer une
erreur.
J'en déduis donc que tu as une gestion d'erreur qui n'est pas reproduite
dans ton extrait et que c'est cette gestion d'erreur qui provoque ce que
tu
décris.
Vérifie s'il y a une gestion d'erreur en amont et tiens moi au courant.
--
HTH
Paul V.
Zanello wrote:
Aie
J'ai maintenant une erreur 424 : objet requis
quand il arrive sur
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes > > Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") - 1)
last_cell = "C" & Right(lignes_chan, InStr(lignes_chan, ",") - 1)
Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
"John Fuss" <newskob650@yahoo.fr> a écrit dans le message de news:
c91mnp$2mq$1@s1.read.news.oleane.net...
Tu utilises on error resume next, ça vient peut-être de là, utilise
if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" <info@zanello.fr> a écrit dans le message de
news:eTOuj1vQEHA.1276@TK2MSFTNGP11.phx.gbl...
C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai oublié
de le coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
"John Fuss" <newskob650@yahoo.fr> a écrit dans le message de news:
c91kn7$1d3$1@s1.read.news.oleane.net...
Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj
= obj.
John
"Zanello" <info@zanello.fr> a écrit dans le message de
news:ejuxHhvQEHA.3140@TK2MSFTNGP11.phx.gbl...
Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change pas.
Au premier passage elle prend bien la bonne valeur mais à la
boucle d'après elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où
ça pêche. Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > >>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address) If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Bonjour,
Selon moi, il n'y pas de problème ;-)
Sauf que tu ouvres à chaque boucle le fichier ce qui doit provoquer une
erreur.
J'en déduis donc que tu as une gestion d'erreur qui n'est pas reproduite
dans ton extrait et que c'est cette gestion d'erreur qui provoque ce que
tu
décris.
Vérifie s'il y a une gestion d'erreur en amont et tiens moi au courant.
--
HTH
Paul V.
Zanello wrote:Aie
J'ai maintenant une erreur 424 : objet requis
quand il arrive sur
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes > > Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") - 1)
last_cell = "C" & Right(lignes_chan, InStr(lignes_chan, ",") - 1)
Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
"John Fuss" a écrit dans le message de news:
c91mnp$2mq$Tu utilises on error resume next, ça vient peut-être de là, utilise
if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" a écrit dans le message de
news:C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai oublié
de le coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
"John Fuss" a écrit dans le message de news:
c91kn7$1d3$Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj
= obj.
John
"Zanello" a écrit dans le message de
news:Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change pas.
Au premier passage elle prend bien la bonne valeur mais à la
boucle d'après elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où
ça pêche. Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > >>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address) If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Je change de fenêtre avec windows(toto.xls).activate mais les
fichiers sont déjà ouverts.
L'ouverture des fichiers se fait avant la boucle et il n'y a pas de
gestion d'erreur si ce n'est la ligne de john.
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
J'ai essayé
If Chan_trouvé = "" Or Err.Number <> 0 Then
Je sais pas si c'est correct mais j'ai plus l'erreur
Par contre j'ai toujours mon problème du début (variable qui ne varie
pas.) Ca ne marche qu'au premier tour de la boucle.
Merci à tous les deux pour votre contribution.
"Paul V." a écrit dans le message de news:Bonjour,
Selon moi, il n'y pas de problème ;-)
Sauf que tu ouvres à chaque boucle le fichier ce qui doit provoquer
une erreur.
J'en déduis donc que tu as une gestion d'erreur qui n'est pas
reproduite dans ton extrait et que c'est cette gestion d'erreur qui
provoque ce que tu décris.
Vérifie s'il y a une gestion d'erreur en amont et tiens moi au
courant.
--
HTH
Paul V.
Zanello wrote:Aie
J'ai maintenant une erreur 424 : objet requis
quand il arrive sur
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché >>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes >>> Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") -
1) last_cell = "C" & Right(lignes_chan, InStr(lignes_chan, ",")
- 1) Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
"John Fuss" a écrit dans le message de news:
c91mnp$2mq$Tu utilises on error resume next, ça vient peut-être de là, utilise
if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" a écrit dans le message de
news:C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai oublié
de le coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
"John Fuss" a écrit dans le message de news:
c91kn7$1d3$Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj
= obj.
John
"Zanello" a écrit dans le message de
news:Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change
pas. Au premier passage elle prend bien la bonne valeur mais à
la boucle d'après elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où
ça pêche. Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché >>>>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step
-1 Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address) If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Je change de fenêtre avec windows(toto.xls).activate mais les
fichiers sont déjà ouverts.
L'ouverture des fichiers se fait avant la boucle et il n'y a pas de
gestion d'erreur si ce n'est la ligne de john.
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
J'ai essayé
If Chan_trouvé = "" Or Err.Number <> 0 Then
Je sais pas si c'est correct mais j'ai plus l'erreur
Par contre j'ai toujours mon problème du début (variable qui ne varie
pas.) Ca ne marche qu'au premier tour de la boucle.
Merci à tous les deux pour votre contribution.
"Paul V." <pav4006@skynet.be> a écrit dans le message de news:
eEEwE9wQEHA.2132@TK2MSFTNGP11.phx.gbl...
Bonjour,
Selon moi, il n'y pas de problème ;-)
Sauf que tu ouvres à chaque boucle le fichier ce qui doit provoquer
une erreur.
J'en déduis donc que tu as une gestion d'erreur qui n'est pas
reproduite dans ton extrait et que c'est cette gestion d'erreur qui
provoque ce que tu décris.
Vérifie s'il y a une gestion d'erreur en amont et tiens moi au
courant.
--
HTH
Paul V.
Zanello wrote:
Aie
J'ai maintenant une erreur 424 : objet requis
quand il arrive sur
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché >>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes >>> Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") -
1) last_cell = "C" & Right(lignes_chan, InStr(lignes_chan, ",")
- 1) Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
"John Fuss" <newskob650@yahoo.fr> a écrit dans le message de news:
c91mnp$2mq$1@s1.read.news.oleane.net...
Tu utilises on error resume next, ça vient peut-être de là, utilise
if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" <info@zanello.fr> a écrit dans le message de
news:eTOuj1vQEHA.1276@TK2MSFTNGP11.phx.gbl...
C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai oublié
de le coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
"John Fuss" <newskob650@yahoo.fr> a écrit dans le message de news:
c91kn7$1d3$1@s1.read.news.oleane.net...
Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj
= obj.
John
"Zanello" <info@zanello.fr> a écrit dans le message de
news:ejuxHhvQEHA.3140@TK2MSFTNGP11.phx.gbl...
Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change
pas. Au premier passage elle prend bien la bonne valeur mais à
la boucle d'après elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où
ça pêche. Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché >>>>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step
-1 Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address) If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Je change de fenêtre avec windows(toto.xls).activate mais les
fichiers sont déjà ouverts.
L'ouverture des fichiers se fait avant la boucle et il n'y a pas de
gestion d'erreur si ce n'est la ligne de john.
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
J'ai essayé
If Chan_trouvé = "" Or Err.Number <> 0 Then
Je sais pas si c'est correct mais j'ai plus l'erreur
Par contre j'ai toujours mon problème du début (variable qui ne varie
pas.) Ca ne marche qu'au premier tour de la boucle.
Merci à tous les deux pour votre contribution.
"Paul V." a écrit dans le message de news:Bonjour,
Selon moi, il n'y pas de problème ;-)
Sauf que tu ouvres à chaque boucle le fichier ce qui doit provoquer
une erreur.
J'en déduis donc que tu as une gestion d'erreur qui n'est pas
reproduite dans ton extrait et que c'est cette gestion d'erreur qui
provoque ce que tu décris.
Vérifie s'il y a une gestion d'erreur en amont et tiens moi au
courant.
--
HTH
Paul V.
Zanello wrote:Aie
J'ai maintenant une erreur 424 : objet requis
quand il arrive sur
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché >>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes >>> Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") -
1) last_cell = "C" & Right(lignes_chan, InStr(lignes_chan, ",")
- 1) Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
"John Fuss" a écrit dans le message de news:
c91mnp$2mq$Tu utilises on error resume next, ça vient peut-être de là, utilise
if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" a écrit dans le message de
news:C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai oublié
de le coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
"John Fuss" a écrit dans le message de news:
c91kn7$1d3$Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj
= obj.
John
"Zanello" a écrit dans le message de
news:Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change
pas. Au premier passage elle prend bien la bonne valeur mais à
la boucle d'après elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où
ça pêche. Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché >>>>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step
-1 Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address) If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Je n'ai fait que lire ton morceau de code mais il me semble que tu as très
clairement une boucle for .. next à l'intérieur de laquelle tu fait une
ouverture répétée du même fichier.
En résumé:
For ligne_Chan_cherché > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
..................
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier base.xls"
.....................
next
Le reste de ton code à l'air parfait.
Si tu fais un pas à pas, tu détecteras ou se passe l'erreur sans
difficulté.
Si tu n'y arrives pas, mets le code complet sur le forum.
--
HTH
Paul V.
Zanello wrote:Je change de fenêtre avec windows(toto.xls).activate mais les
fichiers sont déjà ouverts.
L'ouverture des fichiers se fait avant la boucle et il n'y a pas de
gestion d'erreur si ce n'est la ligne de john.
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
J'ai essayé
If Chan_trouvé = "" Or Err.Number <> 0 Then
Je sais pas si c'est correct mais j'ai plus l'erreur
Par contre j'ai toujours mon problème du début (variable qui ne varie
pas.) Ca ne marche qu'au premier tour de la boucle.
Merci à tous les deux pour votre contribution.
"Paul V." a écrit dans le message de news:Bonjour,
Selon moi, il n'y pas de problème ;-)
Sauf que tu ouvres à chaque boucle le fichier ce qui doit provoquer
une erreur.
J'en déduis donc que tu as une gestion d'erreur qui n'est pas
reproduite dans ton extrait et que c'est cette gestion d'erreur qui
provoque ce que tu décris.
Vérifie s'il y a une gestion d'erreur en amont et tiens moi au
courant.
--
HTH
Paul V.
Zanello wrote:Aie
J'ai maintenant une erreur 424 : objet requis
quand il arrive sur
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > >>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes > >>> Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") -
1) last_cell = "C" & Right(lignes_chan, InStr(lignes_chan, ",")
- 1) Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
"John Fuss" a écrit dans le message de news:
c91mnp$2mq$Tu utilises on error resume next, ça vient peut-être de là, utilise
if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" a écrit dans le message de
news:C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai oublié
de le coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
"John Fuss" a écrit dans le message de news:
c91kn7$1d3$Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj
= obj.
John
"Zanello" a écrit dans le message de
news:Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change
pas. Au premier passage elle prend bien la bonne valeur mais à
la boucle d'après elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où
ça pêche. Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > >>>>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step
-1 Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address) If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Je n'ai fait que lire ton morceau de code mais il me semble que tu as très
clairement une boucle for .. next à l'intérieur de laquelle tu fait une
ouverture répétée du même fichier.
En résumé:
For ligne_Chan_cherché > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
..................
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier base.xls"
.....................
next
Le reste de ton code à l'air parfait.
Si tu fais un pas à pas, tu détecteras ou se passe l'erreur sans
difficulté.
Si tu n'y arrives pas, mets le code complet sur le forum.
--
HTH
Paul V.
Zanello wrote:
Je change de fenêtre avec windows(toto.xls).activate mais les
fichiers sont déjà ouverts.
L'ouverture des fichiers se fait avant la boucle et il n'y a pas de
gestion d'erreur si ce n'est la ligne de john.
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
J'ai essayé
If Chan_trouvé = "" Or Err.Number <> 0 Then
Je sais pas si c'est correct mais j'ai plus l'erreur
Par contre j'ai toujours mon problème du début (variable qui ne varie
pas.) Ca ne marche qu'au premier tour de la boucle.
Merci à tous les deux pour votre contribution.
"Paul V." <pav4006@skynet.be> a écrit dans le message de news:
eEEwE9wQEHA.2132@TK2MSFTNGP11.phx.gbl...
Bonjour,
Selon moi, il n'y pas de problème ;-)
Sauf que tu ouvres à chaque boucle le fichier ce qui doit provoquer
une erreur.
J'en déduis donc que tu as une gestion d'erreur qui n'est pas
reproduite dans ton extrait et que c'est cette gestion d'erreur qui
provoque ce que tu décris.
Vérifie s'il y a une gestion d'erreur en amont et tiens moi au
courant.
--
HTH
Paul V.
Zanello wrote:
Aie
J'ai maintenant une erreur 424 : objet requis
quand il arrive sur
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > >>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes > >>> Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") -
1) last_cell = "C" & Right(lignes_chan, InStr(lignes_chan, ",")
- 1) Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
"John Fuss" <newskob650@yahoo.fr> a écrit dans le message de news:
c91mnp$2mq$1@s1.read.news.oleane.net...
Tu utilises on error resume next, ça vient peut-être de là, utilise
if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" <info@zanello.fr> a écrit dans le message de
news:eTOuj1vQEHA.1276@TK2MSFTNGP11.phx.gbl...
C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai oublié
de le coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
"John Fuss" <newskob650@yahoo.fr> a écrit dans le message de news:
c91kn7$1d3$1@s1.read.news.oleane.net...
Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj
= obj.
John
"Zanello" <info@zanello.fr> a écrit dans le message de
news:ejuxHhvQEHA.3140@TK2MSFTNGP11.phx.gbl...
Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change
pas. Au premier passage elle prend bien la bonne valeur mais à
la boucle d'après elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où
ça pêche. Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > >>>>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step
-1 Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address) If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Je n'ai fait que lire ton morceau de code mais il me semble que tu as très
clairement une boucle for .. next à l'intérieur de laquelle tu fait une
ouverture répétée du même fichier.
En résumé:
For ligne_Chan_cherché > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
..................
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier base.xls"
.....................
next
Le reste de ton code à l'air parfait.
Si tu fais un pas à pas, tu détecteras ou se passe l'erreur sans
difficulté.
Si tu n'y arrives pas, mets le code complet sur le forum.
--
HTH
Paul V.
Zanello wrote:Je change de fenêtre avec windows(toto.xls).activate mais les
fichiers sont déjà ouverts.
L'ouverture des fichiers se fait avant la boucle et il n'y a pas de
gestion d'erreur si ce n'est la ligne de john.
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
J'ai essayé
If Chan_trouvé = "" Or Err.Number <> 0 Then
Je sais pas si c'est correct mais j'ai plus l'erreur
Par contre j'ai toujours mon problème du début (variable qui ne varie
pas.) Ca ne marche qu'au premier tour de la boucle.
Merci à tous les deux pour votre contribution.
"Paul V." a écrit dans le message de news:Bonjour,
Selon moi, il n'y pas de problème ;-)
Sauf que tu ouvres à chaque boucle le fichier ce qui doit provoquer
une erreur.
J'en déduis donc que tu as une gestion d'erreur qui n'est pas
reproduite dans ton extrait et que c'est cette gestion d'erreur qui
provoque ce que tu décris.
Vérifie s'il y a une gestion d'erreur en amont et tiens moi au
courant.
--
HTH
Paul V.
Zanello wrote:Aie
J'ai maintenant une erreur 424 : objet requis
quand il arrive sur
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > >>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes > >>> Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") -
1) last_cell = "C" & Right(lignes_chan, InStr(lignes_chan, ",")
- 1) Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
"John Fuss" a écrit dans le message de news:
c91mnp$2mq$Tu utilises on error resume next, ça vient peut-être de là, utilise
if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" a écrit dans le message de
news:C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai oublié
de le coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
"John Fuss" a écrit dans le message de news:
c91kn7$1d3$Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET nomobj
= obj.
John
"Zanello" a écrit dans le message de
news:Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change
pas. Au premier passage elle prend bien la bonne valeur mais à
la boucle d'après elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire où
ça pêche. Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > >>>>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step
-1 Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address) If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Non non.
Regarde bien, il n'y a pas de Workbooks.Open dans la boucle
J'ai mis tout le code et tu peux voir que l'ouverture se fait avant
Le pas à pas s'arrête sur
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
Ca ne marche qu'au premier passage.
Après : erreur 91 variable objet ou variable de bloc with non definie
Sub Prépa_list_chan()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
' Ouverture du fichier pers_chan.xls
ChDir "C:WINNTProfilesFranckBureaucompta"
Workbooks.OpenText FileName:= _
"C:WINNTProfilesFranckBureaucomptapers_chan.xls",
Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote,
_ ConsecutiveDelimiter:úlse, Tab:=True, Semicolon:úlse,
Comma:úlse _ , Space:úlse, Other:úlse,
FieldInfo:=Array(Array(1, 1), Array(2, 1), _
Array(3, 1), Array(4, 1), Array(5, 1))
' Transformation agence=0 en agence=ZA
Cells.Replace What:="0", Replacement:="ZA", LookAt:=xlPart,
SearchOrder _
:=xlByRows, MatchCase:úlse
' Création d'un nouveau classeur calculs.xls et renommages feuilles
Workbooks.Add
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs FileName:= _
"C:WINNTProfilesFranckBureaucomptacalculs.xls",
FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:úlse, _
CreateBackup:úlse
Sheets("Feuil2").Select
Sheets("Feuil2").Name = "list_chan_v"
Sheets("Feuil1").Select
Sheets("Feuil1").Name = "pers_chan"
Windows("pers_chan.xls").Activate
Cells.Select
Selection.Copy
Windows("calculs.xls").Activate
Cells.Select
ActiveSheet.Paste
Range("A1").Select
Windows("pers_chan.xls").Activate
ActiveWorkbook.Close
' Copie des chantiers de pers_chan vers list_chan et suppression des
doublons
Cells.Select
Selection.Sort Key1:=Range("D1"), Order1:=xlAscending,
Key2:=Range("C1") _
, Order2:=xlDescending, Key3:=Range("A1"), Order1:=xlAscending,
Header _ :=xlNo, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom Columns("D:D").Select
Selection.Copy
Sheets("list_chan_v").Select
Columns("A:A").Select
ActiveSheet.Paste
Set MaCell = Worksheets("list_chan_v").Range("A1")
Do While Not IsEmpty(MaCell)
Set MaCellSuite = MaCell.Offset(1, 0)
If MaCellSuite.Value = MaCell.Value Then
MaCell.EntireRow.Delete
End If
Set MaCell = MaCellSuite
Loop
' Mise en forme du tableau pers_chan
Sheets("pers_chan").Select
Columns("C:C").Select
Application.CutCopyMode = False
Selection.Replace What:="ZA", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:úlse
Columns("A:C").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Cells.Select
With Selection.Font
.Name = "Arial"
.Size = 9
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
' Ouverture de personnel fichier base.xls
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls"
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes > Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") - 1)
last_cell = "C" & Right(lignes_chan, InStr(lignes_chan, ",") - 1)
Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé = "" Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Application.ScreenUpdating = True
End Sub
"Paul V." a écrit dans le message de news:Je n'ai fait que lire ton morceau de code mais il me semble que tu
as très clairement une boucle for .. next à l'intérieur de laquelle
tu fait une ouverture répétée du même fichier.
En résumé:
For ligne_Chan_cherché >> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
..................
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" .....................
next
Le reste de ton code à l'air parfait.
Si tu fais un pas à pas, tu détecteras ou se passe l'erreur sans
difficulté.
Si tu n'y arrives pas, mets le code complet sur le forum.
--
HTH
Paul V.
Zanello wrote:Je change de fenêtre avec windows(toto.xls).activate mais les
fichiers sont déjà ouverts.
L'ouverture des fichiers se fait avant la boucle et il n'y a pas de
gestion d'erreur si ce n'est la ligne de john.
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
J'ai essayé
If Chan_trouvé = "" Or Err.Number <> 0 Then
Je sais pas si c'est correct mais j'ai plus l'erreur
Par contre j'ai toujours mon problème du début (variable qui ne
varie pas.) Ca ne marche qu'au premier tour de la boucle.
Merci à tous les deux pour votre contribution.
"Paul V." a écrit dans le message de news:Bonjour,
Selon moi, il n'y pas de problème ;-)
Sauf que tu ouvres à chaque boucle le fichier ce qui doit provoquer
une erreur.
J'en déduis donc que tu as une gestion d'erreur qui n'est pas
reproduite dans ton extrait et que c'est cette gestion d'erreur qui
provoque ce que tu décris.
Vérifie s'il y a une gestion d'erreur en amont et tiens moi au
courant.
--
HTH
Paul V.
Zanello wrote:Aie
J'ai maintenant une erreur 424 : objet requis
quand il arrive sur
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché >>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes >>>>> Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") -
1) last_cell = "C" & Right(lignes_chan, InStr(lignes_chan,
",") - 1) Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
"John Fuss" a écrit dans le message de news:
c91mnp$2mq$Tu utilises on error resume next, ça vient peut-être de là,
utilise if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" a écrit dans le message de
news:C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai
oublié de le coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
"John Fuss" a écrit dans le message de
news: c91kn7$1d3$Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET
nomobj = obj.
John
"Zanello" a écrit dans le message de
news:Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change
pas. Au premier passage elle prend bien la bonne valeur mais à
la boucle d'après elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire
où ça pêche. Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché >>>>>>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1
Step -1 Chan_cherché >>>>>>>>> Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value If Chan_cherché = "" Then Exit
Sub Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address) If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Non non.
Regarde bien, il n'y a pas de Workbooks.Open dans la boucle
J'ai mis tout le code et tu peux voir que l'ouverture se fait avant
Le pas à pas s'arrête sur
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
Ca ne marche qu'au premier passage.
Après : erreur 91 variable objet ou variable de bloc with non definie
Sub Prépa_list_chan()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
' Ouverture du fichier pers_chan.xls
ChDir "C:WINNTProfilesFranckBureaucompta"
Workbooks.OpenText FileName:= _
"C:WINNTProfilesFranckBureaucomptapers_chan.xls",
Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote,
_ ConsecutiveDelimiter:úlse, Tab:=True, Semicolon:úlse,
Comma:úlse _ , Space:úlse, Other:úlse,
FieldInfo:=Array(Array(1, 1), Array(2, 1), _
Array(3, 1), Array(4, 1), Array(5, 1))
' Transformation agence=0 en agence=ZA
Cells.Replace What:="0", Replacement:="ZA", LookAt:=xlPart,
SearchOrder _
:=xlByRows, MatchCase:úlse
' Création d'un nouveau classeur calculs.xls et renommages feuilles
Workbooks.Add
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs FileName:= _
"C:WINNTProfilesFranckBureaucomptacalculs.xls",
FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:úlse, _
CreateBackup:úlse
Sheets("Feuil2").Select
Sheets("Feuil2").Name = "list_chan_v"
Sheets("Feuil1").Select
Sheets("Feuil1").Name = "pers_chan"
Windows("pers_chan.xls").Activate
Cells.Select
Selection.Copy
Windows("calculs.xls").Activate
Cells.Select
ActiveSheet.Paste
Range("A1").Select
Windows("pers_chan.xls").Activate
ActiveWorkbook.Close
' Copie des chantiers de pers_chan vers list_chan et suppression des
doublons
Cells.Select
Selection.Sort Key1:=Range("D1"), Order1:=xlAscending,
Key2:=Range("C1") _
, Order2:=xlDescending, Key3:=Range("A1"), Order1:=xlAscending,
Header _ :=xlNo, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom Columns("D:D").Select
Selection.Copy
Sheets("list_chan_v").Select
Columns("A:A").Select
ActiveSheet.Paste
Set MaCell = Worksheets("list_chan_v").Range("A1")
Do While Not IsEmpty(MaCell)
Set MaCellSuite = MaCell.Offset(1, 0)
If MaCellSuite.Value = MaCell.Value Then
MaCell.EntireRow.Delete
End If
Set MaCell = MaCellSuite
Loop
' Mise en forme du tableau pers_chan
Sheets("pers_chan").Select
Columns("C:C").Select
Application.CutCopyMode = False
Selection.Replace What:="ZA", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:úlse
Columns("A:C").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Cells.Select
With Selection.Font
.Name = "Arial"
.Size = 9
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
' Ouverture de personnel fichier base.xls
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls"
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes > Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") - 1)
last_cell = "C" & Right(lignes_chan, InStr(lignes_chan, ",") - 1)
Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé = "" Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Application.ScreenUpdating = True
End Sub
"Paul V." <pav4006@skynet.be> a écrit dans le message de news:
utnUEByQEHA.2520@TK2MSFTNGP11.phx.gbl...
Je n'ai fait que lire ton morceau de code mais il me semble que tu
as très clairement une boucle for .. next à l'intérieur de laquelle
tu fait une ouverture répétée du même fichier.
En résumé:
For ligne_Chan_cherché >> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
..................
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" .....................
next
Le reste de ton code à l'air parfait.
Si tu fais un pas à pas, tu détecteras ou se passe l'erreur sans
difficulté.
Si tu n'y arrives pas, mets le code complet sur le forum.
--
HTH
Paul V.
Zanello wrote:
Je change de fenêtre avec windows(toto.xls).activate mais les
fichiers sont déjà ouverts.
L'ouverture des fichiers se fait avant la boucle et il n'y a pas de
gestion d'erreur si ce n'est la ligne de john.
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
J'ai essayé
If Chan_trouvé = "" Or Err.Number <> 0 Then
Je sais pas si c'est correct mais j'ai plus l'erreur
Par contre j'ai toujours mon problème du début (variable qui ne
varie pas.) Ca ne marche qu'au premier tour de la boucle.
Merci à tous les deux pour votre contribution.
"Paul V." <pav4006@skynet.be> a écrit dans le message de news:
eEEwE9wQEHA.2132@TK2MSFTNGP11.phx.gbl...
Bonjour,
Selon moi, il n'y pas de problème ;-)
Sauf que tu ouvres à chaque boucle le fichier ce qui doit provoquer
une erreur.
J'en déduis donc que tu as une gestion d'erreur qui n'est pas
reproduite dans ton extrait et que c'est cette gestion d'erreur qui
provoque ce que tu décris.
Vérifie s'il y a une gestion d'erreur en amont et tiens moi au
courant.
--
HTH
Paul V.
Zanello wrote:
Aie
J'ai maintenant une erreur 424 : objet requis
quand il arrive sur
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché >>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes >>>>> Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") -
1) last_cell = "C" & Right(lignes_chan, InStr(lignes_chan,
",") - 1) Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
"John Fuss" <newskob650@yahoo.fr> a écrit dans le message de news:
c91mnp$2mq$1@s1.read.news.oleane.net...
Tu utilises on error resume next, ça vient peut-être de là,
utilise if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" <info@zanello.fr> a écrit dans le message de
news:eTOuj1vQEHA.1276@TK2MSFTNGP11.phx.gbl...
C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai
oublié de le coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
"John Fuss" <newskob650@yahoo.fr> a écrit dans le message de
news: c91kn7$1d3$1@s1.read.news.oleane.net...
Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET
nomobj = obj.
John
"Zanello" <info@zanello.fr> a écrit dans le message de
news:ejuxHhvQEHA.3140@TK2MSFTNGP11.phx.gbl...
Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change
pas. Au premier passage elle prend bien la bonne valeur mais à
la boucle d'après elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire
où ça pêche. Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché >>>>>>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1
Step -1 Chan_cherché >>>>>>>>> Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value If Chan_cherché = "" Then Exit
Sub Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address) If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Non non.
Regarde bien, il n'y a pas de Workbooks.Open dans la boucle
J'ai mis tout le code et tu peux voir que l'ouverture se fait avant
Le pas à pas s'arrête sur
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
Ca ne marche qu'au premier passage.
Après : erreur 91 variable objet ou variable de bloc with non definie
Sub Prépa_list_chan()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
' Ouverture du fichier pers_chan.xls
ChDir "C:WINNTProfilesFranckBureaucompta"
Workbooks.OpenText FileName:= _
"C:WINNTProfilesFranckBureaucomptapers_chan.xls",
Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote,
_ ConsecutiveDelimiter:úlse, Tab:=True, Semicolon:úlse,
Comma:úlse _ , Space:úlse, Other:úlse,
FieldInfo:=Array(Array(1, 1), Array(2, 1), _
Array(3, 1), Array(4, 1), Array(5, 1))
' Transformation agence=0 en agence=ZA
Cells.Replace What:="0", Replacement:="ZA", LookAt:=xlPart,
SearchOrder _
:=xlByRows, MatchCase:úlse
' Création d'un nouveau classeur calculs.xls et renommages feuilles
Workbooks.Add
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs FileName:= _
"C:WINNTProfilesFranckBureaucomptacalculs.xls",
FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:úlse, _
CreateBackup:úlse
Sheets("Feuil2").Select
Sheets("Feuil2").Name = "list_chan_v"
Sheets("Feuil1").Select
Sheets("Feuil1").Name = "pers_chan"
Windows("pers_chan.xls").Activate
Cells.Select
Selection.Copy
Windows("calculs.xls").Activate
Cells.Select
ActiveSheet.Paste
Range("A1").Select
Windows("pers_chan.xls").Activate
ActiveWorkbook.Close
' Copie des chantiers de pers_chan vers list_chan et suppression des
doublons
Cells.Select
Selection.Sort Key1:=Range("D1"), Order1:=xlAscending,
Key2:=Range("C1") _
, Order2:=xlDescending, Key3:=Range("A1"), Order1:=xlAscending,
Header _ :=xlNo, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom Columns("D:D").Select
Selection.Copy
Sheets("list_chan_v").Select
Columns("A:A").Select
ActiveSheet.Paste
Set MaCell = Worksheets("list_chan_v").Range("A1")
Do While Not IsEmpty(MaCell)
Set MaCellSuite = MaCell.Offset(1, 0)
If MaCellSuite.Value = MaCell.Value Then
MaCell.EntireRow.Delete
End If
Set MaCell = MaCellSuite
Loop
' Mise en forme du tableau pers_chan
Sheets("pers_chan").Select
Columns("C:C").Select
Application.CutCopyMode = False
Selection.Replace What:="ZA", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:úlse
Columns("A:C").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Cells.Select
With Selection.Font
.Name = "Arial"
.Size = 9
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
' Ouverture de personnel fichier base.xls
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls"
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes > Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") - 1)
last_cell = "C" & Right(lignes_chan, InStr(lignes_chan, ",") - 1)
Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé = "" Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Application.ScreenUpdating = True
End Sub
"Paul V." a écrit dans le message de news:Je n'ai fait que lire ton morceau de code mais il me semble que tu
as très clairement une boucle for .. next à l'intérieur de laquelle
tu fait une ouverture répétée du même fichier.
En résumé:
For ligne_Chan_cherché >> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
..................
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" .....................
next
Le reste de ton code à l'air parfait.
Si tu fais un pas à pas, tu détecteras ou se passe l'erreur sans
difficulté.
Si tu n'y arrives pas, mets le code complet sur le forum.
--
HTH
Paul V.
Zanello wrote:Je change de fenêtre avec windows(toto.xls).activate mais les
fichiers sont déjà ouverts.
L'ouverture des fichiers se fait avant la boucle et il n'y a pas de
gestion d'erreur si ce n'est la ligne de john.
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
J'ai essayé
If Chan_trouvé = "" Or Err.Number <> 0 Then
Je sais pas si c'est correct mais j'ai plus l'erreur
Par contre j'ai toujours mon problème du début (variable qui ne
varie pas.) Ca ne marche qu'au premier tour de la boucle.
Merci à tous les deux pour votre contribution.
"Paul V." a écrit dans le message de news:Bonjour,
Selon moi, il n'y pas de problème ;-)
Sauf que tu ouvres à chaque boucle le fichier ce qui doit provoquer
une erreur.
J'en déduis donc que tu as une gestion d'erreur qui n'est pas
reproduite dans ton extrait et que c'est cette gestion d'erreur qui
provoque ce que tu décris.
Vérifie s'il y a une gestion d'erreur en amont et tiens moi au
courant.
--
HTH
Paul V.
Zanello wrote:Aie
J'ai maintenant une erreur 424 : objet requis
quand il arrive sur
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché >>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes >>>>> Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") -
1) last_cell = "C" & Right(lignes_chan, InStr(lignes_chan,
",") - 1) Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
"John Fuss" a écrit dans le message de news:
c91mnp$2mq$Tu utilises on error resume next, ça vient peut-être de là,
utilise if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" a écrit dans le message de
news:C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai
oublié de le coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
"John Fuss" a écrit dans le message de
news: c91kn7$1d3$Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET
nomobj = obj.
John
"Zanello" a écrit dans le message de
news:Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change
pas. Au premier passage elle prend bien la bonne valeur mais à
la boucle d'après elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire
où ça pêche. Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché >>>>>>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1
Step -1 Chan_cherché >>>>>>>>> Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value If Chan_cherché = "" Then Exit
Sub Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address) If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Sans vouloir être désagréable, pourrais tu m'expliquer pourquoi tu copie
un
code différent dans ta question.
C'est pas drôle.
--
HTH
Paul V.
Zanello wrote:Non non.
Regarde bien, il n'y a pas de Workbooks.Open dans la boucle
J'ai mis tout le code et tu peux voir que l'ouverture se fait avant
Le pas à pas s'arrête sur
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
Ca ne marche qu'au premier passage.
Après : erreur 91 variable objet ou variable de bloc with non definie
Sub Prépa_list_chan()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
' Ouverture du fichier pers_chan.xls
ChDir "C:WINNTProfilesFranckBureaucompta"
Workbooks.OpenText FileName:= _
"C:WINNTProfilesFranckBureaucomptapers_chan.xls",
Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote,
_ ConsecutiveDelimiter:úlse, Tab:=True, Semicolon:úlse,
Comma:úlse _ , Space:úlse, Other:úlse,
FieldInfo:=Array(Array(1, 1), Array(2, 1), _
Array(3, 1), Array(4, 1), Array(5, 1))
' Transformation agence=0 en agence=ZA
Cells.Replace What:="0", Replacement:="ZA", LookAt:=xlPart,
SearchOrder _
:=xlByRows, MatchCase:úlse
' Création d'un nouveau classeur calculs.xls et renommages feuilles
Workbooks.Add
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs FileName:= _
"C:WINNTProfilesFranckBureaucomptacalculs.xls",
FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:úlse, _
CreateBackup:úlse
Sheets("Feuil2").Select
Sheets("Feuil2").Name = "list_chan_v"
Sheets("Feuil1").Select
Sheets("Feuil1").Name = "pers_chan"
Windows("pers_chan.xls").Activate
Cells.Select
Selection.Copy
Windows("calculs.xls").Activate
Cells.Select
ActiveSheet.Paste
Range("A1").Select
Windows("pers_chan.xls").Activate
ActiveWorkbook.Close
' Copie des chantiers de pers_chan vers list_chan et suppression des
doublons
Cells.Select
Selection.Sort Key1:=Range("D1"), Order1:=xlAscending,
Key2:=Range("C1") _
, Order2:=xlDescending, Key3:=Range("A1"), Order1:=xlAscending,
Header _ :=xlNo, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom Columns("D:D").Select
Selection.Copy
Sheets("list_chan_v").Select
Columns("A:A").Select
ActiveSheet.Paste
Set MaCell = Worksheets("list_chan_v").Range("A1")
Do While Not IsEmpty(MaCell)
Set MaCellSuite = MaCell.Offset(1, 0)
If MaCellSuite.Value = MaCell.Value Then
MaCell.EntireRow.Delete
End If
Set MaCell = MaCellSuite
Loop
' Mise en forme du tableau pers_chan
Sheets("pers_chan").Select
Columns("C:C").Select
Application.CutCopyMode = False
Selection.Replace What:="ZA", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:úlse
Columns("A:C").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Cells.Select
With Selection.Font
.Name = "Arial"
.Size = 9
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
' Ouverture de personnel fichier base.xls
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls"
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes > > Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") - 1)
last_cell = "C" & Right(lignes_chan, InStr(lignes_chan, ",") - 1)
Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé = "" Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Application.ScreenUpdating = True
End Sub
"Paul V." a écrit dans le message de news:Je n'ai fait que lire ton morceau de code mais il me semble que tu
as très clairement une boucle for .. next à l'intérieur de laquelle
tu fait une ouverture répétée du même fichier.
En résumé:
For ligne_Chan_cherché > >> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
..................
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" .....................
next
Le reste de ton code à l'air parfait.
Si tu fais un pas à pas, tu détecteras ou se passe l'erreur sans
difficulté.
Si tu n'y arrives pas, mets le code complet sur le forum.
--
HTH
Paul V.
Zanello wrote:Je change de fenêtre avec windows(toto.xls).activate mais les
fichiers sont déjà ouverts.
L'ouverture des fichiers se fait avant la boucle et il n'y a pas de
gestion d'erreur si ce n'est la ligne de john.
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
J'ai essayé
If Chan_trouvé = "" Or Err.Number <> 0 Then
Je sais pas si c'est correct mais j'ai plus l'erreur
Par contre j'ai toujours mon problème du début (variable qui ne
varie pas.) Ca ne marche qu'au premier tour de la boucle.
Merci à tous les deux pour votre contribution.
"Paul V." a écrit dans le message de news:Bonjour,
Selon moi, il n'y pas de problème ;-)
Sauf que tu ouvres à chaque boucle le fichier ce qui doit provoquer
une erreur.
J'en déduis donc que tu as une gestion d'erreur qui n'est pas
reproduite dans ton extrait et que c'est cette gestion d'erreur qui
provoque ce que tu décris.
Vérifie s'il y a une gestion d'erreur en amont et tiens moi au
courant.
--
HTH
Paul V.
Zanello wrote:Aie
J'ai maintenant une erreur 424 : objet requis
quand il arrive sur
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > >>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes > >>>>> Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") -
1) last_cell = "C" & Right(lignes_chan, InStr(lignes_chan,
",") - 1) Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
"John Fuss" a écrit dans le message de news:
c91mnp$2mq$Tu utilises on error resume next, ça vient peut-être de là,
utilise if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" a écrit dans le message de
news:C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai
oublié de le coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
"John Fuss" a écrit dans le message de
news: c91kn7$1d3$Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET
nomobj = obj.
John
"Zanello" a écrit dans le message de
news:Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change
pas. Au premier passage elle prend bien la bonne valeur mais à
la boucle d'après elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire
où ça pêche. Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > >>>>>>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1
Step -1 Chan_cherché > >>>>>>>>> Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value If Chan_cherché = "" Then Exit
Sub Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address) If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Sans vouloir être désagréable, pourrais tu m'expliquer pourquoi tu copie
un
code différent dans ta question.
C'est pas drôle.
--
HTH
Paul V.
Zanello wrote:
Non non.
Regarde bien, il n'y a pas de Workbooks.Open dans la boucle
J'ai mis tout le code et tu peux voir que l'ouverture se fait avant
Le pas à pas s'arrête sur
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
Ca ne marche qu'au premier passage.
Après : erreur 91 variable objet ou variable de bloc with non definie
Sub Prépa_list_chan()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
' Ouverture du fichier pers_chan.xls
ChDir "C:WINNTProfilesFranckBureaucompta"
Workbooks.OpenText FileName:= _
"C:WINNTProfilesFranckBureaucomptapers_chan.xls",
Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote,
_ ConsecutiveDelimiter:úlse, Tab:=True, Semicolon:úlse,
Comma:úlse _ , Space:úlse, Other:úlse,
FieldInfo:=Array(Array(1, 1), Array(2, 1), _
Array(3, 1), Array(4, 1), Array(5, 1))
' Transformation agence=0 en agence=ZA
Cells.Replace What:="0", Replacement:="ZA", LookAt:=xlPart,
SearchOrder _
:=xlByRows, MatchCase:úlse
' Création d'un nouveau classeur calculs.xls et renommages feuilles
Workbooks.Add
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs FileName:= _
"C:WINNTProfilesFranckBureaucomptacalculs.xls",
FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:úlse, _
CreateBackup:úlse
Sheets("Feuil2").Select
Sheets("Feuil2").Name = "list_chan_v"
Sheets("Feuil1").Select
Sheets("Feuil1").Name = "pers_chan"
Windows("pers_chan.xls").Activate
Cells.Select
Selection.Copy
Windows("calculs.xls").Activate
Cells.Select
ActiveSheet.Paste
Range("A1").Select
Windows("pers_chan.xls").Activate
ActiveWorkbook.Close
' Copie des chantiers de pers_chan vers list_chan et suppression des
doublons
Cells.Select
Selection.Sort Key1:=Range("D1"), Order1:=xlAscending,
Key2:=Range("C1") _
, Order2:=xlDescending, Key3:=Range("A1"), Order1:=xlAscending,
Header _ :=xlNo, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom Columns("D:D").Select
Selection.Copy
Sheets("list_chan_v").Select
Columns("A:A").Select
ActiveSheet.Paste
Set MaCell = Worksheets("list_chan_v").Range("A1")
Do While Not IsEmpty(MaCell)
Set MaCellSuite = MaCell.Offset(1, 0)
If MaCellSuite.Value = MaCell.Value Then
MaCell.EntireRow.Delete
End If
Set MaCell = MaCellSuite
Loop
' Mise en forme du tableau pers_chan
Sheets("pers_chan").Select
Columns("C:C").Select
Application.CutCopyMode = False
Selection.Replace What:="ZA", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:úlse
Columns("A:C").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Cells.Select
With Selection.Font
.Name = "Arial"
.Size = 9
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
' Ouverture de personnel fichier base.xls
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls"
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes > > Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") - 1)
last_cell = "C" & Right(lignes_chan, InStr(lignes_chan, ",") - 1)
Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé = "" Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Application.ScreenUpdating = True
End Sub
"Paul V." <pav4006@skynet.be> a écrit dans le message de news:
utnUEByQEHA.2520@TK2MSFTNGP11.phx.gbl...
Je n'ai fait que lire ton morceau de code mais il me semble que tu
as très clairement une boucle for .. next à l'intérieur de laquelle
tu fait une ouverture répétée du même fichier.
En résumé:
For ligne_Chan_cherché > >> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
..................
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" .....................
next
Le reste de ton code à l'air parfait.
Si tu fais un pas à pas, tu détecteras ou se passe l'erreur sans
difficulté.
Si tu n'y arrives pas, mets le code complet sur le forum.
--
HTH
Paul V.
Zanello wrote:
Je change de fenêtre avec windows(toto.xls).activate mais les
fichiers sont déjà ouverts.
L'ouverture des fichiers se fait avant la boucle et il n'y a pas de
gestion d'erreur si ce n'est la ligne de john.
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
J'ai essayé
If Chan_trouvé = "" Or Err.Number <> 0 Then
Je sais pas si c'est correct mais j'ai plus l'erreur
Par contre j'ai toujours mon problème du début (variable qui ne
varie pas.) Ca ne marche qu'au premier tour de la boucle.
Merci à tous les deux pour votre contribution.
"Paul V." <pav4006@skynet.be> a écrit dans le message de news:
eEEwE9wQEHA.2132@TK2MSFTNGP11.phx.gbl...
Bonjour,
Selon moi, il n'y pas de problème ;-)
Sauf que tu ouvres à chaque boucle le fichier ce qui doit provoquer
une erreur.
J'en déduis donc que tu as une gestion d'erreur qui n'est pas
reproduite dans ton extrait et que c'est cette gestion d'erreur qui
provoque ce que tu décris.
Vérifie s'il y a une gestion d'erreur en amont et tiens moi au
courant.
--
HTH
Paul V.
Zanello wrote:
Aie
J'ai maintenant une erreur 424 : objet requis
quand il arrive sur
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > >>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes > >>>>> Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") -
1) last_cell = "C" & Right(lignes_chan, InStr(lignes_chan,
",") - 1) Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
"John Fuss" <newskob650@yahoo.fr> a écrit dans le message de news:
c91mnp$2mq$1@s1.read.news.oleane.net...
Tu utilises on error resume next, ça vient peut-être de là,
utilise if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" <info@zanello.fr> a écrit dans le message de
news:eTOuj1vQEHA.1276@TK2MSFTNGP11.phx.gbl...
C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai
oublié de le coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
"John Fuss" <newskob650@yahoo.fr> a écrit dans le message de
news: c91kn7$1d3$1@s1.read.news.oleane.net...
Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET
nomobj = obj.
John
"Zanello" <info@zanello.fr> a écrit dans le message de
news:ejuxHhvQEHA.3140@TK2MSFTNGP11.phx.gbl...
Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change
pas. Au premier passage elle prend bien la bonne valeur mais à
la boucle d'après elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire
où ça pêche. Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > >>>>>>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1
Step -1 Chan_cherché > >>>>>>>>> Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value If Chan_cherché = "" Then Exit
Sub Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address) If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Sans vouloir être désagréable, pourrais tu m'expliquer pourquoi tu copie
un
code différent dans ta question.
C'est pas drôle.
--
HTH
Paul V.
Zanello wrote:Non non.
Regarde bien, il n'y a pas de Workbooks.Open dans la boucle
J'ai mis tout le code et tu peux voir que l'ouverture se fait avant
Le pas à pas s'arrête sur
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
Ca ne marche qu'au premier passage.
Après : erreur 91 variable objet ou variable de bloc with non definie
Sub Prépa_list_chan()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
' Ouverture du fichier pers_chan.xls
ChDir "C:WINNTProfilesFranckBureaucompta"
Workbooks.OpenText FileName:= _
"C:WINNTProfilesFranckBureaucomptapers_chan.xls",
Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote,
_ ConsecutiveDelimiter:úlse, Tab:=True, Semicolon:úlse,
Comma:úlse _ , Space:úlse, Other:úlse,
FieldInfo:=Array(Array(1, 1), Array(2, 1), _
Array(3, 1), Array(4, 1), Array(5, 1))
' Transformation agence=0 en agence=ZA
Cells.Replace What:="0", Replacement:="ZA", LookAt:=xlPart,
SearchOrder _
:=xlByRows, MatchCase:úlse
' Création d'un nouveau classeur calculs.xls et renommages feuilles
Workbooks.Add
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs FileName:= _
"C:WINNTProfilesFranckBureaucomptacalculs.xls",
FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:úlse, _
CreateBackup:úlse
Sheets("Feuil2").Select
Sheets("Feuil2").Name = "list_chan_v"
Sheets("Feuil1").Select
Sheets("Feuil1").Name = "pers_chan"
Windows("pers_chan.xls").Activate
Cells.Select
Selection.Copy
Windows("calculs.xls").Activate
Cells.Select
ActiveSheet.Paste
Range("A1").Select
Windows("pers_chan.xls").Activate
ActiveWorkbook.Close
' Copie des chantiers de pers_chan vers list_chan et suppression des
doublons
Cells.Select
Selection.Sort Key1:=Range("D1"), Order1:=xlAscending,
Key2:=Range("C1") _
, Order2:=xlDescending, Key3:=Range("A1"), Order1:=xlAscending,
Header _ :=xlNo, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom Columns("D:D").Select
Selection.Copy
Sheets("list_chan_v").Select
Columns("A:A").Select
ActiveSheet.Paste
Set MaCell = Worksheets("list_chan_v").Range("A1")
Do While Not IsEmpty(MaCell)
Set MaCellSuite = MaCell.Offset(1, 0)
If MaCellSuite.Value = MaCell.Value Then
MaCell.EntireRow.Delete
End If
Set MaCell = MaCellSuite
Loop
' Mise en forme du tableau pers_chan
Sheets("pers_chan").Select
Columns("C:C").Select
Application.CutCopyMode = False
Selection.Replace What:="ZA", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:úlse
Columns("A:C").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Cells.Select
With Selection.Font
.Name = "Arial"
.Size = 9
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
' Ouverture de personnel fichier base.xls
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls"
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > > Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes > > Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") - 1)
last_cell = "C" & Right(lignes_chan, InStr(lignes_chan, ",") - 1)
Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé = "" Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
Application.ScreenUpdating = True
End Sub
"Paul V." a écrit dans le message de news:Je n'ai fait que lire ton morceau de code mais il me semble que tu
as très clairement une boucle for .. next à l'intérieur de laquelle
tu fait une ouverture répétée du même fichier.
En résumé:
For ligne_Chan_cherché > >> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
..................
Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" .....................
next
Le reste de ton code à l'air parfait.
Si tu fais un pas à pas, tu détecteras ou se passe l'erreur sans
difficulté.
Si tu n'y arrives pas, mets le code complet sur le forum.
--
HTH
Paul V.
Zanello wrote:Je change de fenêtre avec windows(toto.xls).activate mais les
fichiers sont déjà ouverts.
L'ouverture des fichiers se fait avant la boucle et il n'y a pas de
gestion d'erreur si ce n'est la ligne de john.
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
J'ai essayé
If Chan_trouvé = "" Or Err.Number <> 0 Then
Je sais pas si c'est correct mais j'ai plus l'erreur
Par contre j'ai toujours mon problème du début (variable qui ne
varie pas.) Ca ne marche qu'au premier tour de la boucle.
Merci à tous les deux pour votre contribution.
"Paul V." a écrit dans le message de news:Bonjour,
Selon moi, il n'y pas de problème ;-)
Sauf que tu ouvres à chaque boucle le fichier ce qui doit provoquer
une erreur.
J'en déduis donc que tu as une gestion d'erreur qui n'est pas
reproduite dans ton extrait et que c'est cette gestion d'erreur qui
provoque ce que tu décris.
Vérifie s'il y a une gestion d'erreur en amont et tiens moi au
courant.
--
HTH
Paul V.
Zanello wrote:Aie
J'ai maintenant une erreur 424 : objet requis
quand il arrive sur
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
' Sélection du chantier cherché
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > >>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1 Step -1
Chan_cherché = Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value
If Chan_cherché = "" Then Exit Sub
' Copie des noms pour le chantier sélectionné
Worksheets("pers_chan").Select
i = 1
lignes_chan = Null
nombre_lignes > >>>>> Worksheets("pers_chan").Range("A1").End(xlDown).Row While i <
nombre_lignes + 1 If Cells(i, 4) = Chan_cherché Then
lignes_chan = lignes_chan & i & ","
End If
i = i + 1
Wend
lignes_chan = Left(lignes_chan, Len(lignes_chan) - 1)
first_cell = "A" & Left(lignes_chan, InStr(lignes_chan, ",") -
1) last_cell = "C" & Right(lignes_chan, InStr(lignes_chan,
",") - 1) Range(first_cell, last_cell).Copy
' Recherche du chantier dans personnel fichier base.xls
Dim Chan_trouvé As Range
Windows("personnel fichier base.xls").Activate
Range("B45").Select
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:úlse).Address)
If Chan_trouvé Is Empty Or Err.Number <> 0 Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next
"John Fuss" a écrit dans le message de news:
c91mnp$2mq$Tu utilises on error resume next, ça vient peut-être de là,
utilise if Err.number <> 0 then 'si une erreur s'est produite
sinon ton test :
If Chan_trouvé = Empty Then
if Chan_trouvé is Empty then
If Chan_trouvé is empty or err.number = 0 then....
John
"Zanello" a écrit dans le message de
news:C'est vrai.
J'avais enlevé le set pour voir le résultat produit et j'ai
oublié de le coller ici.
D'ailleurs s'il n'y est pas, le résultat est encore pire.
L'erreur que j'ai décrite plus bas arrive avec
Set Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _
LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
"John Fuss" a écrit dans le message de
news: c91kn7$1d3$Essai :
SET Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address)
car Chan_trouvé est un objet Range et on doit utiliser SET
nomobj = obj.
John
"Zanello" a écrit dans le message de
news:Bonjour.
J'ai un problème de variable.
Dans la boucle For... Next, la variable Chan_trouvé ne change
pas. Au premier passage elle prend bien la bonne valeur mais à
la boucle d'après elle garde sa valeur sans la recalculer.
Est-ce qu'un costaud (ou une d'ailleurs...) pourrait me dire
où ça pêche. Merci d'avance.
Dim Chan_cherché As String
Windows("calculs.xls").Activate
For ligne_Chan_cherché > >>>>>>>>> Worksheets("list_chan_v").Range("A1").End(xlDown).Row To 1
Step -1 Chan_cherché > >>>>>>>>> Worksheets("list_chan_v").Range("A" &
ligne_Chan_cherché).Value If Chan_cherché = "" Then Exit
Sub Workbooks.Open FileName:= _
"C:WINNTProfilesFranckBureaucomptapersonnel fichier
base.xls" Windows("personnel fichier base.xls").Activate
Range("B45").Select
On Error Resume Next
Chan_trouvé = Range(Cells.Find(What:=Chan_cherché,
After:¬tiveCell, _ LookIn:=xlValues, LookAt:=xlPart,
SearchOrder:=xlByRows, _ SearchDirection:=xlNext,
MatchCase:úlse).Address) If Chan_trouvé = Empty Then
MsgBox "pas trouvé le chantier"
Else: Chan_trouvé.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
End If
Windows("calculs.xls").Activate
Next