"on error" ... je n'ai plus de cheuveux de bon matin....
4 réponses
Alfred WALLACE
Bonjour :-))
pourquoi ce code plante sur set sht02 (erreur: l'indice n'appartiend
pas =E0 la selection)
Sub injection_donnees()
On Error resume next
Dim Sht01 As Worksheet
Dim Sht02 As Worksheet
Set Sht01 =3D Worksheets("temp01")
On Error GoTo 0
If Sht01 Is Nothing Then
Sheets.Add.Name =3D "temp01"
Else
Worksheets("temp01").Columns.Clear
End If
Set Sht02 =3D Worksheets("temp02")
On Error GoTo 0
If Sht Is Nothing Then
Sheets.Add.Name =3D "temp02"
Else
Worksheets("temp02").Columns.Clear
End If
En gros, je souhaite :
soit cr=E9er une feuille si elle n'=E9xiste pas.
soit effacer son contenu.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
DJ
Salut,
Vite fait en passant,
Tu invalides le gestionnaire d'erreur apres avoir affecté Sht01 (On Error Goto 0) Donc quand tu affectes Sht02 si une erreur se produit tu es averti. (Il faudrait replacer un On Error resume Next avant d'affecter Sht02.
@++
"Alfred WALLACE" a écrit dans le message de news:
Bonjour :-))
pourquoi ce code plante sur set sht02 (erreur: l'indice n'appartiend pas à la selection)
Sub injection_donnees() On Error resume next
Dim Sht01 As Worksheet Dim Sht02 As Worksheet
Set Sht01 = Worksheets("temp01") On Error GoTo 0 If Sht01 Is Nothing Then Sheets.Add.Name = "temp01" Else Worksheets("temp01").Columns.Clear End If
Set Sht02 = Worksheets("temp02")
On Error GoTo 0 If Sht Is Nothing Then Sheets.Add.Name = "temp02" Else Worksheets("temp02").Columns.Clear End If
En gros, je souhaite : soit créer une feuille si elle n'éxiste pas. soit effacer son contenu.
Mercii
José
Salut,
Vite fait en passant,
Tu invalides le gestionnaire d'erreur apres avoir affecté Sht01 (On Error
Goto 0)
Donc quand tu affectes Sht02 si une erreur se produit tu es averti.
(Il faudrait replacer un On Error resume Next avant d'affecter Sht02.
@++
"Alfred WALLACE" <jose6a@gmail.com> a écrit dans le message de news:
1152775421.768998.195260@m73g2000cwd.googlegroups.com...
Bonjour :-))
pourquoi ce code plante sur set sht02 (erreur: l'indice n'appartiend
pas à la selection)
Sub injection_donnees()
On Error resume next
Dim Sht01 As Worksheet
Dim Sht02 As Worksheet
Set Sht01 = Worksheets("temp01")
On Error GoTo 0
If Sht01 Is Nothing Then
Sheets.Add.Name = "temp01"
Else
Worksheets("temp01").Columns.Clear
End If
Set Sht02 = Worksheets("temp02")
On Error GoTo 0
If Sht Is Nothing Then
Sheets.Add.Name = "temp02"
Else
Worksheets("temp02").Columns.Clear
End If
En gros, je souhaite :
soit créer une feuille si elle n'éxiste pas.
soit effacer son contenu.
Tu invalides le gestionnaire d'erreur apres avoir affecté Sht01 (On Error Goto 0) Donc quand tu affectes Sht02 si une erreur se produit tu es averti. (Il faudrait replacer un On Error resume Next avant d'affecter Sht02.
@++
"Alfred WALLACE" a écrit dans le message de news:
Bonjour :-))
pourquoi ce code plante sur set sht02 (erreur: l'indice n'appartiend pas à la selection)
Sub injection_donnees() On Error resume next
Dim Sht01 As Worksheet Dim Sht02 As Worksheet
Set Sht01 = Worksheets("temp01") On Error GoTo 0 If Sht01 Is Nothing Then Sheets.Add.Name = "temp01" Else Worksheets("temp01").Columns.Clear End If
Set Sht02 = Worksheets("temp02")
On Error GoTo 0 If Sht Is Nothing Then Sheets.Add.Name = "temp02" Else Worksheets("temp02").Columns.Clear End If
En gros, je souhaite : soit créer une feuille si elle n'éxiste pas. soit effacer son contenu.
Mercii
José
JB
Bonjour,
Sub essai() x = "feuil5" If ExisteFeuille(x) Then Sheets(x).Cells.Clear Else Sheets.Add ActiveSheet.Name = x End If End Sub
Function ExisteFeuille(f) ExisteFeuille = False For s = 1 To Sheets.Count If UCase(Sheets(s).Name) = UCase(f) Then ExisteFeuille = True Next s End Function
Cordialement JB
Bonjour :-))
pourquoi ce code plante sur set sht02 (erreur: l'indice n'appartiend pas à la selection)
Sub injection_donnees() On Error resume next
Dim Sht01 As Worksheet Dim Sht02 As Worksheet
Set Sht01 = Worksheets("temp01") On Error GoTo 0 If Sht01 Is Nothing Then Sheets.Add.Name = "temp01" Else Worksheets("temp01").Columns.Clear End If
Set Sht02 = Worksheets("temp02")
On Error GoTo 0 If Sht Is Nothing Then Sheets.Add.Name = "temp02" Else Worksheets("temp02").Columns.Clear End If
En gros, je souhaite : soit créer une feuille si elle n'éxiste pas. soit effacer son contenu.
Mercii
José
Bonjour,
Sub essai()
x = "feuil5"
If ExisteFeuille(x) Then
Sheets(x).Cells.Clear
Else
Sheets.Add
ActiveSheet.Name = x
End If
End Sub
Function ExisteFeuille(f)
ExisteFeuille = False
For s = 1 To Sheets.Count
If UCase(Sheets(s).Name) = UCase(f) Then ExisteFeuille = True
Next s
End Function
Cordialement JB
Bonjour :-))
pourquoi ce code plante sur set sht02 (erreur: l'indice n'appartiend
pas à la selection)
Sub injection_donnees()
On Error resume next
Dim Sht01 As Worksheet
Dim Sht02 As Worksheet
Set Sht01 = Worksheets("temp01")
On Error GoTo 0
If Sht01 Is Nothing Then
Sheets.Add.Name = "temp01"
Else
Worksheets("temp01").Columns.Clear
End If
Set Sht02 = Worksheets("temp02")
On Error GoTo 0
If Sht Is Nothing Then
Sheets.Add.Name = "temp02"
Else
Worksheets("temp02").Columns.Clear
End If
En gros, je souhaite :
soit créer une feuille si elle n'éxiste pas.
soit effacer son contenu.
Sub essai() x = "feuil5" If ExisteFeuille(x) Then Sheets(x).Cells.Clear Else Sheets.Add ActiveSheet.Name = x End If End Sub
Function ExisteFeuille(f) ExisteFeuille = False For s = 1 To Sheets.Count If UCase(Sheets(s).Name) = UCase(f) Then ExisteFeuille = True Next s End Function
Cordialement JB
Bonjour :-))
pourquoi ce code plante sur set sht02 (erreur: l'indice n'appartiend pas à la selection)
Sub injection_donnees() On Error resume next
Dim Sht01 As Worksheet Dim Sht02 As Worksheet
Set Sht01 = Worksheets("temp01") On Error GoTo 0 If Sht01 Is Nothing Then Sheets.Add.Name = "temp01" Else Worksheets("temp01").Columns.Clear End If
Set Sht02 = Worksheets("temp02")
On Error GoTo 0 If Sht Is Nothing Then Sheets.Add.Name = "temp02" Else Worksheets("temp02").Columns.Clear End If
En gros, je souhaite : soit créer une feuille si elle n'éxiste pas. soit effacer son contenu.
Mercii
José
Alfred WALLACE
DJ wrote:
Salut,
Vite fait en passant,
Tu invalides le gestionnaire d'erreur apres avoir affecté Sht01 (On Err or Goto 0) Donc quand tu affectes Sht02 si une erreur se produit tu es averti. (Il faudrait replacer un On Error resume Next avant d'affecter Sht02.
@++
Salut DJ, merci pour ton aide. çà ne marche pas. Alors, j'ai créer 2 sub que j'appel pour créer les 2 feuilles :
cre_ou_vide_tempo01 cre_ou_vide_tempo02
et dans un module j'ai : Sub cre_ou_vide_tempo01() On Error Resume Next Dim Sht01 As Worksheet Set Sht01 = Worksheets("temp01") On Error GoTo 0 If Sht01 Is Nothing Then Sheets.Add.Name = "temp01" Else Worksheets("temp01").Columns.Clear End If End Sub
Sub cre_ou_vide_tempo02() On Error Resume Next Dim Sht02 As Worksheet Set Sht02 = Worksheets("temp02") On Error GoTo 0 If Sht02 Is Nothing Then Sheets.Add.Name = "temp02" Else Worksheets("temp02").Columns.Clear End If End Sub
Voilà, c'est surement pas tres élegant, et peut etre même contre-efficace, mais çà marche.
Merci José
DJ wrote:
Salut,
Vite fait en passant,
Tu invalides le gestionnaire d'erreur apres avoir affecté Sht01 (On Err or
Goto 0)
Donc quand tu affectes Sht02 si une erreur se produit tu es averti.
(Il faudrait replacer un On Error resume Next avant d'affecter Sht02.
@++
Salut DJ, merci pour ton aide.
çà ne marche pas. Alors, j'ai créer 2 sub que j'appel pour créer
les 2 feuilles :
cre_ou_vide_tempo01
cre_ou_vide_tempo02
et dans un module j'ai :
Sub cre_ou_vide_tempo01()
On Error Resume Next
Dim Sht01 As Worksheet
Set Sht01 = Worksheets("temp01")
On Error GoTo 0
If Sht01 Is Nothing Then
Sheets.Add.Name = "temp01"
Else
Worksheets("temp01").Columns.Clear
End If
End Sub
Sub cre_ou_vide_tempo02()
On Error Resume Next
Dim Sht02 As Worksheet
Set Sht02 = Worksheets("temp02")
On Error GoTo 0
If Sht02 Is Nothing Then
Sheets.Add.Name = "temp02"
Else
Worksheets("temp02").Columns.Clear
End If
End Sub
Voilà, c'est surement pas tres élegant, et peut etre même
contre-efficace, mais çà marche.
Tu invalides le gestionnaire d'erreur apres avoir affecté Sht01 (On Err or Goto 0) Donc quand tu affectes Sht02 si une erreur se produit tu es averti. (Il faudrait replacer un On Error resume Next avant d'affecter Sht02.
@++
Salut DJ, merci pour ton aide. çà ne marche pas. Alors, j'ai créer 2 sub que j'appel pour créer les 2 feuilles :
cre_ou_vide_tempo01 cre_ou_vide_tempo02
et dans un module j'ai : Sub cre_ou_vide_tempo01() On Error Resume Next Dim Sht01 As Worksheet Set Sht01 = Worksheets("temp01") On Error GoTo 0 If Sht01 Is Nothing Then Sheets.Add.Name = "temp01" Else Worksheets("temp01").Columns.Clear End If End Sub
Sub cre_ou_vide_tempo02() On Error Resume Next Dim Sht02 As Worksheet Set Sht02 = Worksheets("temp02") On Error GoTo 0 If Sht02 Is Nothing Then Sheets.Add.Name = "temp02" Else Worksheets("temp02").Columns.Clear End If End Sub
Voilà, c'est surement pas tres élegant, et peut etre même contre-efficace, mais çà marche.
Merci José
DJ
Salut,
Je ne vois pas pourquoi ca ne marche pas, je viens de verifier et pas de probleme.
Sinon pour simplifier un peu ton code tu peux faire ceci:
Sub cre_ou_vide_Feuille(NomFeuille As String) Dim Sht As Worksheet
On Error Resume Next Set Sht = Worksheets(NomFeuille) On Error GoTo 0
If Sht Is Nothing Then Sheets.Add.Name = NomFeuille Else Sht.Columns.Clear End If End Sub
Que tu appelles comme ceci:
Pour la feuille Tempo01: Call cre_ou_vide_Feuille(NomFeuille:="Tempo01")
"Alfred WALLACE" a écrit dans le message de news:
DJ wrote:
Salut,
Vite fait en passant,
Tu invalides le gestionnaire d'erreur apres avoir affecté Sht01 (On Error Goto 0) Donc quand tu affectes Sht02 si une erreur se produit tu es averti. (Il faudrait replacer un On Error resume Next avant d'affecter Sht02.
@++
Salut DJ, merci pour ton aide. çà ne marche pas. Alors, j'ai créer 2 sub que j'appel pour créer les 2 feuilles :
cre_ou_vide_tempo01 cre_ou_vide_tempo02
et dans un module j'ai : Sub cre_ou_vide_tempo01() On Error Resume Next Dim Sht01 As Worksheet Set Sht01 = Worksheets("temp01") On Error GoTo 0 If Sht01 Is Nothing Then Sheets.Add.Name = "temp01" Else Worksheets("temp01").Columns.Clear End If End Sub
Sub cre_ou_vide_tempo02() On Error Resume Next Dim Sht02 As Worksheet Set Sht02 = Worksheets("temp02") On Error GoTo 0 If Sht02 Is Nothing Then Sheets.Add.Name = "temp02" Else Worksheets("temp02").Columns.Clear End If End Sub
Voilà, c'est surement pas tres élegant, et peut etre même contre-efficace, mais çà marche.
Merci José
Salut,
Je ne vois pas pourquoi ca ne marche pas, je viens de verifier et pas de
probleme.
Sinon pour simplifier un peu ton code tu peux faire ceci:
Sub cre_ou_vide_Feuille(NomFeuille As String)
Dim Sht As Worksheet
On Error Resume Next
Set Sht = Worksheets(NomFeuille)
On Error GoTo 0
If Sht Is Nothing Then
Sheets.Add.Name = NomFeuille
Else
Sht.Columns.Clear
End If
End Sub
Que tu appelles comme ceci:
Pour la feuille Tempo01: Call cre_ou_vide_Feuille(NomFeuille:="Tempo01")
"Alfred WALLACE" <jose6a@gmail.com> a écrit dans le message de news:
1152777063.832305.297920@h48g2000cwc.googlegroups.com...
DJ wrote:
Salut,
Vite fait en passant,
Tu invalides le gestionnaire d'erreur apres avoir affecté Sht01 (On Error
Goto 0)
Donc quand tu affectes Sht02 si une erreur se produit tu es averti.
(Il faudrait replacer un On Error resume Next avant d'affecter Sht02.
@++
Salut DJ, merci pour ton aide.
çà ne marche pas. Alors, j'ai créer 2 sub que j'appel pour créer
les 2 feuilles :
cre_ou_vide_tempo01
cre_ou_vide_tempo02
et dans un module j'ai :
Sub cre_ou_vide_tempo01()
On Error Resume Next
Dim Sht01 As Worksheet
Set Sht01 = Worksheets("temp01")
On Error GoTo 0
If Sht01 Is Nothing Then
Sheets.Add.Name = "temp01"
Else
Worksheets("temp01").Columns.Clear
End If
End Sub
Sub cre_ou_vide_tempo02()
On Error Resume Next
Dim Sht02 As Worksheet
Set Sht02 = Worksheets("temp02")
On Error GoTo 0
If Sht02 Is Nothing Then
Sheets.Add.Name = "temp02"
Else
Worksheets("temp02").Columns.Clear
End If
End Sub
Voilà, c'est surement pas tres élegant, et peut etre même
contre-efficace, mais çà marche.
Je ne vois pas pourquoi ca ne marche pas, je viens de verifier et pas de probleme.
Sinon pour simplifier un peu ton code tu peux faire ceci:
Sub cre_ou_vide_Feuille(NomFeuille As String) Dim Sht As Worksheet
On Error Resume Next Set Sht = Worksheets(NomFeuille) On Error GoTo 0
If Sht Is Nothing Then Sheets.Add.Name = NomFeuille Else Sht.Columns.Clear End If End Sub
Que tu appelles comme ceci:
Pour la feuille Tempo01: Call cre_ou_vide_Feuille(NomFeuille:="Tempo01")
"Alfred WALLACE" a écrit dans le message de news:
DJ wrote:
Salut,
Vite fait en passant,
Tu invalides le gestionnaire d'erreur apres avoir affecté Sht01 (On Error Goto 0) Donc quand tu affectes Sht02 si une erreur se produit tu es averti. (Il faudrait replacer un On Error resume Next avant d'affecter Sht02.
@++
Salut DJ, merci pour ton aide. çà ne marche pas. Alors, j'ai créer 2 sub que j'appel pour créer les 2 feuilles :
cre_ou_vide_tempo01 cre_ou_vide_tempo02
et dans un module j'ai : Sub cre_ou_vide_tempo01() On Error Resume Next Dim Sht01 As Worksheet Set Sht01 = Worksheets("temp01") On Error GoTo 0 If Sht01 Is Nothing Then Sheets.Add.Name = "temp01" Else Worksheets("temp01").Columns.Clear End If End Sub
Sub cre_ou_vide_tempo02() On Error Resume Next Dim Sht02 As Worksheet Set Sht02 = Worksheets("temp02") On Error GoTo 0 If Sht02 Is Nothing Then Sheets.Add.Name = "temp02" Else Worksheets("temp02").Columns.Clear End If End Sub
Voilà, c'est surement pas tres élegant, et peut etre même contre-efficace, mais çà marche.