Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

"on error" ... je n'ai plus de cheuveux de bon matin....

4 réponses
Avatar
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.

Mercii

Jos=E9

4 réponses

Avatar
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é
Avatar
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é


Avatar
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é

Avatar
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é