Sub avec des suffixes variable

Bonsoir,

j'utilise actuellement des Sub "affichage" qui gèrent l'affichage ou non des onglets.

Par exemple, affiche_SON, affiche_ENC, affiche_REV etc....

je récupère dans l'une de mes macro via une box le suffixe ENC, SON ect.... que l'utilisateur à saisie.

tete = InputBox()

je voulais faire une fonction affiche_ & tete

mais évidement c'est impossible,

si vous avez des idées pour contourner le probleme

Merci

Bonjour,

Avec un passage de parametre :

Sub test()
    affiche "SON"
End Sub

Sub affiche(param As String)
    If UCase(param) = "SON" Then
        '...
    ElseIf UCase(param) = "ENC" Then
        '...
    End If
End Sub

eric

j’étais partie sur idée comme celle là mais je pense que je pourrais trouver plus simple, mais je cherche encore

Voici mon code

sub inserlist()

'Permet l'insertion d'une liste de donnée sur tous les onglets d'un meme équipement

Dim Y, Y5, Y6, FIN, FIN2, FIN3, i%, VraiAuMoinsUneFois ' % = As integer

MsgBox "Cette opération peut prendre plusieurs secondes." & Chr(10) & Chr(10) & "Attendez le prochain message."

'affiche_tous
tete = InputBox("Saisisser le préfix du matériel", "Insertion d'une liste de donnée", "")
toto = InputBox("Saisisser les coordonnées de la cellule cible", "Insertion d'une liste de donnée", "")
titi = InputBox("Saisisser le nom de la Source", "Insertion d'une liste de donnée", "")

  For i = 1 To Worksheets.Count
      With Worksheets(i)
       Y5 = Left(.Name, 3) = tete
       Y6 = Right(.Name, 3) = tete

        Y = Y5 Or Y6
            If Y Then
                .Unprotect Password:="mdp"

            VraiAuMoinsUneFois = 1

            Worksheets(i).Select
                On Error GoTo FIN2

            With Range(toto).Validation
            On Error GoTo FIN3
               .Delete
               .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
               xlBetween, Formula1:="=" & titi
               .IgnoreBlank = True
               .InCellDropdown = True
               .ShowInput = True
               .ShowError = True
            End With
            End If
        Y = Y5
            If Y Then
            .Protect Password:="mdp"
            End If
        End With
    Next

If VraiAuMoinsUneFois <> 1 Then GoTo FIN

MsgBox "Insertion de la liste de donnée réalisée avec succès !" & Chr(13) & "Onglets vérrouillés"
Exit sub

J'aimerai que les onglets ayant le préfixe et le suffixe saisie soit affichés pour que le reste de mon code puisse allez jusqu'au bout....pour l'instant ma solution c'est "affiche_tous" qui me permet de rendre visible tous les onglets du classeur ( environs 500) ce qui demande beaucoup de ressource et de temps.

Si vous avez des idées plus simple je suis à votre entière disposition.

préfixe et le suffixe ne représente qq chose de précis que pour toi.

Soit plus précis et détaille ce que tu veux faire.

Tu veux travailler sur tous les onglets qui commencent ou finissent par "SON" ?

Mettre un fichier de travail réduit à l'essentiel peut aider aussi.

bonsoir,

Préfixe et suffixe sont respectivement les 3 premiers et les 3 derniers caractères du nom de chaque feuilles...

Moi je pense que tu a aussi vite fait de déprotéger toutes tes feuilles.

A condition d'inhiber les macros automatiques Activate et Déactivate (en les renommant XActivate et XDéactivate)

et de rajouter

Application.ScreenUpdating = False

au début des macros...

A+

Oui eriic,

C'est presque ca,

Dans l'idée j'aimerai que selon la saisie de "tete",les onglets ayant le prefixe et le sufixe correspondant; soit visible sinon le reste de ma macro ne fonctionne pas.

SON n'est qu'un exemple.

ci joint mon ma version de travail ou je test mes macros.

Et pour galopin qui a consacré déjà quelques jours sur mon projet,

j'avoue que je maîtrise pas trop les propriétés du workbook, je travail toujours dessus, j'essaie d'apprivoiser le DefBool, qui a des possibilités franchement excitantes.

Merci a vous deux

Pas de problème, tous les onglets sont visibles.

D'ailleurs pas une seule ligne de code qui laisse penser que c'est ce que tu veux faire.

Vous répondez plus vite, que j’édite mon message !

Voilà la solution que j'ai trouver finalement

Dim i%, iRow%, iCol%, iR%, iC%, x%, tete$, S1$, S2$

Dim Y, yVraiAuMoinsUneFois

Dim a, b, d, CONTINUE, ONE, TWO

Application.DisplayAlerts = False

Application.ScreenUpdating = False

tete = InputBox("Saisir le préfix du matériel" & Chr(13) & Chr(13) & _

"(CEN,ENC,PIP,MIC,REV,SON)" & Chr(13) & Chr(13) & _

"Attendez le prochain message", "Edition des étiquettes classeur")

affiche_tous

Set d = CreateObject("Scripting.Dictionary")

For i = 1 To Worksheets.Count

With Worksheets(i)

If tete = "CEN" Then GoTo ONE

If tete = "PIP" Then GoTo ONE

If tete = "MIC" Then GoTo ONE

If tete = "SON" Then GoTo TWO

Y = Left(.Name, 3) = tete

If Y Then

yVraiAuMoinsUneFois = 1

.Activate

S1 = .Range("FdV_Serie").Value

S2 = .Range("FdV_Denom2").Value

d.Item(S1) = S2

End If

GoTo CONTINUE

ONE: Y = Left(.Name, 3) = tete

If Y Then

yVraiAuMoinsUneFois = 1

.Activate

S1 = .Range("FdV_Equip").Value

S2 = .Range("FdV_Serie").Value

d.Item(S1) = S2

End If

GoTo CONTINUE

TWO: Y = Left(.Name, 3) = tete

If Y Then

yVraiAuMoinsUneFois = 1

.Activate

S1 = .Range("FdV_Equip").Value

S2 = .Range("FdV_Denom2").Value

d.Item(S1) = S2

End If

CONTINUE:

End With

Next

If Not yVraiAuMoinsUneFois Then GoTo FIN

' suppression de la feuille à imprimer s'il elle n'a pas déjà été supprimée

On Error Resume Next

Sheets("_Etiquettes_Cla_asup").Delete

'ne pas remettre la gestion d'erreur

Sheets("_Etiquettes_classeurs").Visible = True

Sheets("_Etiquettes_classeurs").Copy After:=Sheets(Sheets.Count)

ActiveSheet.Name = "_Etiquettes_Cla_asup"

Sheets("_Etiquettes_classeurs").Visible = False

Rechercher des sujets similaires à "sub suffixes variable"