'If ActiveWorkbook.Worksheets(sNomFeuille) Is Nothing Then' ne fonctionne pas

superbog

XLDnaute Occasionnel
bonjour,

Voilà j'ai besoin d'une macro qui me permet, selon si une feuille n'existe pas de faire une action


Code:
Sub fac()


Dim i, DerLigBase, lig As Integer
Dim dossier, sNomFeuille As String
Dim colFeuille As Collection
Dim FeuilleExist As Boolean
Dim shAct As Worksheet, sh1 As Worksheet, sh2 As Worksheet, sh3 As Worksheet, sh4 As Worksheet, sh5 As Worksheet
Dim nomNewClasseur As String
Dim Numfacture As Long


'Recherche de la dernière ligne
DerLigBase = Sheets("HR").Range("C1000").End(xlUp).Row
Set sh1 = Workbooks("affaires.xlsm").Sheets("Facture")
Set sh2 = Workbooks("affaires.xlsm").Sheets("fact")
Set sh3 = Workbooks("affaires.xlsm").Sheets("HR")
lig = sh2.Range("I1000").End(xlUp).Row
sh1.Activate

    'Recherche de la ligne et tri dans chaque feuille
For i = 2 To DerLigBase

'Récupère le nom de l'onglet stocké dans la collection
 sNomFeuille = sh3.Cells(i, 2).Text
'Recherche si cet onglet existe et exclure les dossiers archivés
If ActiveWorkbook.Worksheets(sNomFeuille) Is Nothing Then goto 300
...
300 next i
end sub

mais quand je la lance j'ai l'erreur "l'indice n'appartient pas à la sélection" sur la ligne If ActiveWorkbook.Worksheets(sNomFeuille) Is Nothing Then


HELP!!!

merci
 
C

Compte Supprimé 979

Guest
Re : 'If ActiveWorkbook.Worksheets(sNomFeuille) Is Nothing Then' ne fonctionne pas

Bonjour superbog

Voici une des possibilités
Code:
Sub fac()
  Dim i, DerLigBase, lig As Integer
  Dim dossier, sNomFeuille As String
  Dim colFeuille As Collection
  Dim FeuilleExist As Boolean
  Dim shAct As Worksheet, sh1 As Worksheet, sh2 As Worksheet, sh3 As Worksheet, sh4 As Worksheet, sh5 As Worksheet
  Dim nomNewClasseur As String
  Dim Numfacture As Long


  'Recherche de la dernière ligne
  DerLigBase = Sheets("HR").Range("C1000").End(xlUp).Row
  Set sh1 = Workbooks("affaires.xlsm").Sheets("Facture")
  Set sh2 = Workbooks("affaires.xlsm").Sheets("fact")
  Set sh3 = Workbooks("affaires.xlsm").Sheets("HR")
  lig = sh2.Range("I1000").End(xlUp).Row
  sh1.Activate


  'Recherche de la ligne et tri dans chaque feuille
  For i = 2 To DerLigBase
    'Récupère le nom de l'onglet stocké dans la collection
    sNomFeuille = sh3.Cells(i, 2).Text
    'Recherche si cet onglet existe et exclure les dossiers archivés
    ' En cas d'erreur on continue
    On Error Resume Next
    ActiveWorkbook.Worksheets(sNomFeuille).Activate
    ' Si une erreur est retournée = feuille inexistante
    If Err.Number > 0 Then
      Err.Clear
      ' le code
    End If
    ' Rénitialiser la gestion des erreurs par Excel
    On Error GoTo 0
  Next i
End Sub

A+
 

Paf

XLDnaute Barbatruc
Re : 'If ActiveWorkbook.Worksheets(sNomFeuille) Is Nothing Then' ne fonctionne pas

Bonjour à tous

une autre solution pour vérifier l'existence d'une feuille:

Code:
'Récupère le nom de l'onglet stocké dans la collection
 sNomFeuille = sh3.Cells(i, 2).Text
'Recherche si cet onglet existe et exclure les dossiers archivés
If IsError(Evaluate("='" & sNomFeuille & "'!A1")) Then goto 300

IsError(Evaluate("='" & sNomFeuille & "'!A1")) renvoie vrai si n'existe pas

A+

Edit : dans la discussion https://www.excel-downloads.com/thr...gne-dune-autre-feuille-sous-condition.228592/ (sans réponse) j'avais omis le ' (apostrophe)
 
Dernière édition:

laurent950

XLDnaute Accro
Re : 'If ActiveWorkbook.Worksheets(sNomFeuille) Is Nothing Then' ne fonctionne pas

Bonsoir,

Juste pour comprendre le nom de l'onglet rechercher et stocké dans une cellule de la feuille :

- sNomFeuille = sh3.Cells(i, 2).Text c'est a dire dans cette cellule c'est le nom de l'onglet ?

et aussi pour comprendre le nom de l'onglet stoké en mémoire c'est bien :

- Set sh3 = Workbooks("affaires.xlsm").Sheets("HR") ---->> le nom de l'onglet c'est HR ( memoire objet sh3)

donc pour etre sur en cellule c'est stocké (sh3.Cells(i, 2).Text) soit ce text HR ?
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 161
Messages
2 085 852
Membres
103 005
dernier inscrit
gilles.hery