Sélection de données dans une boucle For Each

Bonjour,

C'est mon premier post dans cette section du forum et comme expliqué dans ma présentation, j'utilise VBA depuis peu (Cf présentation : https://forum.excel-pratique.com/presentations/bonjour-d-t79056.html)

J'ai mis en place un code (avec l'aide de ce qui se trouve sur internet) qui permet de tester la présence d'une feuille dans un classeur. Pour cette opération, je crée une feuille nommée "NomFeuille". Mais avant, je veux tester si cette feuille a déjà été crée par une précédente manipulation et le cas échéant je voudrai supprimé toutes les valeurs situées dans celle-ci. Mon code est :

Function FeuilleExiste(MaFeuille As String) As Boolean

''''''''''''''''''''''''Fonction qui calcule qui teste la présence d'une feuille''''''''''''''''''''''
Dim Feuille As Worksheet

    FeuilleExiste = False
    For Each Feuille In Worksheets
        If (Feuille.Name = MaFeuille) Then
            FeuilleExiste = True
            Worksheets("MaFeuille").Activate
            Cells.Select
            Selection.ClearContents
        End If
    Next Feuille

     If FeuilleExiste = False Then
       Sheets.Add
       ActiveSheet.Name = MaFeuille
   End If
End Function

J'appelle la fonction par une Sub qui se trouve dans un autre module:

Sub test()

NomFeuille = Range("A2").Value
Fonction.FeuilleExiste (NomFeuille)

End Sub

Avez_vous une idée de la raison qui fasse que ça n'aille pas?

Merci

L'erreur qui apparait est :

Erreur d'exécution '9':

L'indice n'appartient pas à la sélection.

La ligne du code en surbrillance est :

            Worksheets("MaFeuille").Activate

Je n'ai pas d'autres informations

Bonjour

à teste :

Worksheets(MaFeuille).Activate sans les guillemets car MaFeuille est une variable String

minanse a écrit :

Bonjour

à teste :

Worksheets(MaFeuille).Activate sans les guillemets car MaFeuille est une variable String

Bonjour minanse,

C'était l'erreur, maintenant le code fonctionne proprement. Merci beaucoup .

La solution est donc :

Worksheets(MaFeuille).Activate

Bonjour,

Je te conseillerais de procéder différemment.

La fonction :

Function FeuilleExiste(MaFeuille As String) As Boolean
''''Fonction qui teste la présence d'une feuille'''
Dim Feuille As Worksheet
    For Each Feuille In Worksheets
        If Feuille.Name = MaFeuille Then
            FeuilleExiste = True
            Exit Function
        End If
    Next Feuille
End Function

La procédure appelante :

Sub Test()
Dim NomFeuille As String
    NomFeuille = Range("A2").Value
    If FeuilleExiste(NomFeuille) Then
        Worksheets(NomFeuille).Cells.ClearContents
    Else
        Sheets.Add
        ActiveSheet.Name = NomFeuille
    End If
End Sub

A+

Ok je cherche vais chercher et cliquer sur le bouton.

Pour information, j'ai fait un mix de votre code et du mien. Ça donne une Sub que j'appelle avec pour code :

Sub FeuilleExiste(MaFeuille As String)
'''''Fonction qui teste la présence d'un onglet'''''

    Dim Feuille As Worksheet
    Dim test As Boolean

        For Each Feuille In Worksheets
            If Feuille.Name = MaFeuille Then
                Worksheets(MaFeuille).Cells.ClearContents
                test = True
                Exit Sub
            End If
        Next Feuille

    If test = True Then
            Worksheets(MaFeuille).Cells.ClearContents
        Else
            Sheets.Add
            ActiveSheet.Name = MaFeuille
        End If

End Sub

Le code fonctionne parfaitement et ne prend que deux lignes lors de l'appel dans le Main.

Merci encore

Dans ce cas, tu peux simplifier le code

Sub FeuilleExiste(MaFeuille As String)
'''''Fonction qui teste la présence d'un onglet'''''
Dim Feuille As Worksheet
    For Each Feuille In Worksheets
        If Feuille.Name = MaFeuille Then
            Worksheets(MaFeuille).Cells.ClearContents
            Exit Sub
        End If
    Next Feuille
    Sheets.Add
    ActiveSheet.Name = MaFeuille
End Sub

A+

Super, en effet ça fait gagner quelques lignes . Je suis preneur et c'est malin .

En tout cas merci beaucoup à toutes et tous pour votre aide, elle m'a permis d'avancer pas mal sur mon projet aujourd'hui.

+++

Rechercher des sujets similaires à "selection donnees boucle each"