Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème avec ma première macro(inputbox)

  • Initiateur de la discussion Initiateur de la discussion patobeur
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

patobeur

XLDnaute Nouveau
Bonjour à toutes et à tous.

J'utilise Excel depuis pas mal d'années, mais je débute en macros et Vba.
Gràce à vous, j'apprends mais j'ai quelques petits soucis.

Voilà, j'ai créé un classeur de suivi des congés.
Sur ma feuille accueil, j'ai créé un bouton "nouveau" qui lance une macro
pour faire une copie de la feuille modèle avec une inputbox pour renommer
la feuille avec le nom du salarié.
Tout fonctionne, sauf si je ne rentres rien ou si je fais annuler la macro me renvoies un message d'erreur et me copie quand même ma feuille modèle.

Dans le même ordre d'idée, j'aimerais créer une macro identique pour supprimer un salarié, mais là je séches complètement.

Ci-joint le fichier en exemple.
Merci d'avance pour votre aide.
 

Pièces jointes

Re : Problème avec ma première macro(inputbox)

Bonjour

Ci dessous la macro modifiée
Il faut contrôler les données
le nom ne doit pas être une chaine vide et la feuille n'existe pas déjà

Code:
Sub CopieFeuille()
'
' CopieFeuille Macro
' Macro enregistrée le 28/04/2007 par Pierre
    Dim ws As Worksheet, MonNom As String

    MonNom = InputBox(prompt:="Nom du salarié?")
    If MonNom = "" Then Exit Sub
    For Each ws In Worksheets
        If ws.Name = MonNom Then
        MonNom = InputBox("Cette Fiche exite déjà ! Inscrivez un autre nom")
        If MonNom = "" Then Exit Sub
        end if
    Next ws
    
    Sheets("Modele").Select
    Sheets("Modele").Copy After:=Sheets(2)
    ActiveSheet.Name = MonNom



End Sub

JP
 
Re : Problème avec ma première macro(inputbox)

Merci beaucoup JP.
Le code fonctionne à merveille.

Par contre, j'ai essayé de m'en inspiré pour créer une macro pour supprimer une feuille, mais elle ne fonctionne pas. Voici le code:

Sub SupprFeuille()

Dim ws As Worksheet, MonNom As String

MonNom = InputBox(prompt:="Nom du salarié?")
If MonNom = "" Then Exit Sub
For Each ws In Worksheets
If ws.Name <> MonNom Then
MonNom = InputBox("Cette Fiche n'exite pas ! Inscrivez un autre nom")
If MonNom = "" Then Exit Sub
End If
Next ws

Sheets("MonNom").Select
ActiveWindow.SelectedSheets.Delete
End Sub

Je crois que je ne suis pas doué.
Merci d'avance si quelqu'un pouvait me dire ce qui cloche.
 
Re : Problème avec ma première macro(inputbox)

Bonjour (re)

MonNom étant une variable, il ne faut pas mettre le caractère "

Code:
    Sheets(MonNom).Select
    ActiveWindow.SelectedSheets.Delete
End Sub


JPE]
 
Re : Problème avec ma première macro(inputbox)

Merci encore une fois, mais la modif ne fonctionne pas.

Quand je tape un nom de feuille valide dans la boîte de message, elle me renvoie le message d'erreur (cette fihe n'existe pas) et la macro se bloque.

Bon Weekend.
 
Re : Problème avec ma première macro(inputbox)

Ciao Patobeur, et au parmesan...
En fait, il faut faire attention à tout, les minuscules et les majuscules surtout quand tu évoques un nom de feuille. XL est très susceptible sur ce sujet. C'est peut-être ça, moi j'ai eu souvent le cas.
J'ai oublié la tomate... en bon sicilien de lointaine descendance.
et l'ail...
ciao ciao
Gruick.
 
Re : Problème avec ma première macro(inputbox)

Non désolé Gruick, même avec une feuille nommé a la macro ne fonctionne pas.

P.S. juste au beurre, origine normande oblige. Et du cidre.
A+
Bon Weekend.
 
Re : Problème avec ma première macro(inputbox)

Re,
Je crois que c'est la commande inputbox qu'il faut compléter par le type de donnée (ici du texte, donc type 2 je crois)

MonNom = InputBox("Nom du salarié ?", Type:=2)

et

MonNom = InputBox("Cette Fiche existe déjà ! Inscrivez un autre nom", Type:=2)

sinon :

Set MonNom = Application.InputBox("Nom du salarié ?", Type:=2)

PS aussi, mon Père était du Havre ! (moi Parigot, nul n'est parfait !)


Gruick
 
Dernière édition:
Re : Problème avec ma première macro(inputbox)

Essaies ça :
Code:
Sub CopieFeuille()
' CopieFeuille Macro
' Macro enregistrée le 28/04/2007 par Pierre
Application.DisplayAlerts = False
re:
Worksheets("Modele").Copy After:=Sheets(2)
réponse = InputBox(prompt:="Nom du salarié ?")
If réponse = "" Then ActiveSheet.Delete: GoTo re
For i = 4 To Sheets.Count
    If Sheets(i).Name = réponse Then
        ActiveSheet.Delete: MsgBox "nom existant déjà"
        GoTo re
    End If
Next i
ActiveSheet.Name = réponse
End Sub

Ca marche chez moi, et je vais donc me faire des nouilles encore !!!

Gruick
 
Re : Problème avec ma première macro(inputbox)

Salut à tous,

Une autre macro qui compare 2 textes mis en majuscules.
Code:
Sub Ajout()
    Dim ws As Worksheet, MonNom As String
    'force à saisir un nom
    Do
      MonNom = InputBox(prompt:="Nom du salarié?")
      If MonNom = "" Then MsgBox "Il faut saisir un nom !"
    Loop Until MonNom <> ""
    
    For Each ws In Worksheets
        If UCase(ws.Name) = UCase(MonNom) Then
          MsgBox ("Cette Fiche exite déjà ! Inscrivez un autre nom")
          Exit Sub
        End If
    Next ws
    Sheets("Modele").Copy After:=Sheets(2)
    ActiveSheet.Name = MonNom
End Sub


@+
 
Re : Problème avec ma première macro(inputbox)

Merci à vous tous, toutes vos macros fonctionnent,
mais jp14 m'avait déjà trouvé une solution.

Mon problème c'est d'en faire une deuxième pour supprimer une feuille sélectionnée par inputbox.

En tout cas j'essaye de m'inspirer de vos codes pour résoudre mon problème,merci.

Bon Weekend et bonne nouilles à Gruick
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
636
Réponses
7
Affichages
552
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…