[ExcelVba] Problème feuille inexistante

François_59 -  
 Utilisateur anonyme -
Bonjour,

J'ai créer un classeur excel avec une 100n de feuilles. Afin de simplifier ma recherche, j'ai créer une macro en vba :

Sub cherche()
Dim maFeuil As String
maFeuil = InputBox(Prompt:="Taper le nom de la feuille recherchée. ")
Sheets(maFeuil).Select
Range("a1").Select
If Sheet(maFeuil).select = false then
Goto 1
End if
GestErreur:
MsgBox "Cette feuille n'existe pas !"
End Sub

2 réponses

  1. François_59
     
    Bonjour,

    Voila, j'ai refait mon programme pour la recherche de mes feuilles, et je me retrouve fasse à quelques soucis :

    Sub Rechercheclient()
    Dim mafeuil As String
    Dim Feuille As Worksheet
    Dim flag As Boolean

    flag = False
    mafeuil = InputBox("Quelle fiche client voulez vous ouvrir ? ","", "Nom du client")

    For Each Feuille In Worksheets
    If (Feuille.Name = mafeuil) Then
    Sheets(mafeuil).Select
    Range("a1").Select
    flag = True
    End If
    Next

    If Not (flag) Then
    Worksheets.Add.Name = mafeuil
    Range("a1").Select
    Range("a1") = "Nom du client :"
    Range("B1") = mafeuil
    Range("A2") = "Code client :"
    Range("a4") = "Date facture"
    Range("b4") = "N° facture"
    Range("c4") = "Montant facture"
    Range("b50") = "Total"

    End If
    End Sub

    Voici mes problèmes:

    1->Quand il me demande le nom dem on client pour la première fois et que je décide d'annuler, il me met une erreur d'exécution (1004) au niveau de la ligne worksheets.add.name=mafeuil.
    Comment peut-on corriger cette erreur svp ?

    2->Pour la création d'une nouvelle feuille, Je voudrais mettre en cellule "b2" le code du client (Range("b2")=Inputbox(Quel est le code client ?")), Mais j'ai une erreur.
    Je peux faire comment ?

    3->Encore dans la création de feuille, je voudrais insérer une formule somme en cellule c50 (Range("c50")=Sum(c5:c49)), L'erreur et que cette partie est erronée, peux on me la corriger svp ?

    4->Comment créer une cadre avec tout les traits (horizontaux et verticaux) entre la cellule a4 à c49.

    Je sais que j'en demande beaucoup, mais je suis novice en vba excel.
    En tout cas, je vous remercie par avance pour la réponse à mes problèmes.

    Merci,

    @++
    0
  2. Utilisateur anonyme
     
    Bonjour,

    Voici une suggestion :

    Sub Rechercheclient()
        
        Dim mafeuil As String
        Dim Feuille As Worksheet
        Dim flag As Boolean
        
        flag = False
        mafeuil = InputBox("Quelle fiche client voulez vous ouvrir ? ", "", "Nom du client")
        
        If (mafeuil <> "") Then
            For Each Feuille In Worksheets
                If (Feuille.Name = mafeuil) Then
                    Sheets(mafeuil).Select
                    Range("a1").Select
                    flag = True
                End If
            Next
            
            If Not (flag) Then
                Worksheets.Add.Name = mafeuil
                Range("b2").Value = InputBox("Quel est le code client ?")
                Range("a1").Select
                Range("a1").Value = "Nom du client :"
                Range("B1").Value = mafeuil
                Range("A2").Value = "Code client :"
                Range("a4").Value = "Date facture"
                Range("b4").Value = "N° facture"
                Range("c4").Value = "Montant facture"
                Range("b50").Value = "Total"
                Range("c50").Value = "=Sum(c5:c49)"
                MiseEnForme
            End If
        End If
    
    End Sub
    '
    
    Function MiseEnForme()
    
        Range("A4:C49").Select
        Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        With Selection
            .Borders(xlEdgeLeft).LineStyle = xlContinuous
            .Borders(xlEdgeLeft).Weight = xlThin
            .Borders(xlEdgeTop).LineStyle = xlContinuous
            .Borders(xlEdgeTop).Weight = xlThin
            .Borders(xlEdgeBottom).LineStyle = xlContinuous
            .Borders(xlEdgeBottom).Weight = xlThin
            .Borders(xlEdgeRight).LineStyle = xlContinuous
            .Borders(xlEdgeRight).Weight = xlThin
            .Borders(xlInsideVertical).LineStyle = xlContinuous
            .Borders(xlInsideVertical).Weight = xlThin
            .Borders(xlInsideHorizontal).LineStyle = xlContinuous
            .Borders(xlInsideHorizontal).Weight = xlThin
        End With
        Range("A1").Select
    
    End Function
    


    Lupin
    0