Macro renommant des feuilles qui marche ou pas selon le nom

Fermé
Aldouss Messages postés 8 Date d'inscription lundi 26 janvier 2015 Statut Membre Dernière intervention 10 octobre 2018 - Modifié le 25 mars 2017 à 20:47
Aldouss Messages postés 8 Date d'inscription lundi 26 janvier 2015 Statut Membre Dernière intervention 10 octobre 2018 - 25 mars 2017 à 22:42
Bonjour, et merci d'avance pour votre aide !

J'ai un soucis que je n'identifie pas :

Je cherche à faire une fonction SAVFeuille(byval ws as worksheet)
Elle est censée prendre en input une feuille, en faire une parfaite copie nommée SAV + nom initial


Ca marche pour certains noms initiaux, mais pour certains ça donne erreur 1004 :


Voici le code :
Sub SAVFeuille(ByVal ws As Worksheet)

Dim wb As Workbook
Dim wsS As Worksheet    'sauvegarde
Dim wsA As Worksheet    'feuille active
Dim Nom As String          'nom de la feuille dont creer une sauvegarde

Set wb = ThisWorkbook
Set wsA = ActiveSheet

With wb
    'recuperation nom
    Nom = ws.Name
    Nom = "SAV " & Nom

    'creation feuille SAV + affectation
    .Worksheets.Add(after:=Worksheets(Application.Worksheets.Count)).Name = Nom
    Set wsS = .Worksheets(Application.Worksheets.Count)

    ws.Cells.Copy Destination:=wsS.Cells(1, 1)

'activation feuille initiale
wsA.Activate

End With

End Sub



Je la teste avec cette sub :

Sub TestSAVFEuille()

Dim i as integer

i = Application.InputBox("Feuille num cb ?", Type:=2, Default:=1)
Call SAVFeuille(ThisWorkbook.Worksheets(i))
End Sub


Alors là aussi, si je ne passe par la ligne que j'avais écrite initialement :
Call SAVFeuille(ThisWorkbook.Worksheets(Application.InputBox("Feuille num cb ?", Type:=2, Default:=1))
En gros au lieu de d'abord remplir un "i", puis ensuite demander la feuille "i", là aussi une erreur et je ne comprends pas pourquoi -_-
Erreur d'indice ..

Alors opurquoi est-ce que ma macro initiale me met cette erreur ? Par exemple avec le nom TOUTES MES MACROS EN BOUTON ça ne marche pas,
Le rename manuel en SAV TOUTES MES MACROS EN BOUTON fonctionne très bien pourtant.
Avec d'autres noms, ça marche très bien ...
A voir également:

2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
25 mars 2017 à 21:12
Application.InputBox renvoie une chaine et i= ... assure la conversion en nombre.

Essaies :
Call SAVFeuille(ThisWorkbook.Worksheets(CInt(Application.InputBox("Feuille num cb ?", Type:=2, Default:=1))))
1
Aldouss Messages postés 8 Date d'inscription lundi 26 janvier 2015 Statut Membre Dernière intervention 10 octobre 2018
25 mars 2017 à 22:42
Whaaaa

Super merci, j'ai la tête pleine de code je n'arrive plus à penser à des choses simples

Je savais que ce n'était pas si compliqué !

MERCI pour ton aide précieuse !
0
Aldouss Messages postés 8 Date d'inscription lundi 26 janvier 2015 Statut Membre Dernière intervention 10 octobre 2018
25 mars 2017 à 20:55
Quand tu réponds à tes questions :

Monsieur, apprenez à lire -> "Vérifiez que le nombre de caractères ne dépasse pas 31"

=NbCar("SAV TOUTES MES MACROS EN BOUTONS") donne 32

Reste juste le soucis de pourquoi je n'arrive pas à lancer mon test avec l'inputbox,
Pour le coup je ne comprends pas et ne pas comprendre m'embête.
0