QueryClose userform ne fonctionne pas

Bonsoir à tous

Voilà, j'ai un soucis avec l'évènement QueryClose. J'ai un userform, qui après avoir cliqué sur un CommandButton1 réalise des opération sur ma feuille excel. Seulement dans cette userform j'ai une combobox "remplie" par l'utilisateur destinée à nommer un nouvel onglet crée au moment ou je valide et quitte l'userform. Et je souhaite annuler la fermeture de l'userform de cette manière :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    For i = 1 To Sheets.Count
        If Sheets(i).Name = ComboBox_mois.Value & " " & ComboBox_année.Value Then
            MsgBox "Attention, l'onglet : " & ComboBox_mois.Value & " " & ComboBox_année.Value & " existe déjà." & Chr(10) & Chr(10) & "Vous ne pouvez pas créer un onglet déjà existant."
            Cancel = true
        End If
    Next
End Sub

seulement cela ne fonctionne pas... Auriez vous une solution?

Merci

Bonsoir

Vérifies bien la casse entre le nom de la feuille et le nom dans ta ComboBox_Mois

essayes

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    For i = 1 To Sheets.Count
        If UCase(Sheets(i).Name) = UCase(ComboBox_mois.Value & " " & ComboBox_année.Value) Then
            MsgBox "Attention, l'onglet : " & ComboBox_mois.Value & " " & ComboBox_année.Value & " existe déjà." & Chr(10) & Chr(10) & "Vous ne pouvez pas créer un onglet déjà existant."
            Cancel = True
        End If
    Next
End Sub

bonsoir banzai, merci pour ta réponse tu as du courage même le week end

Je viens d'essayer mais ça ne marche pas malheureusement. En fait même si je fais ça :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

            Cancel = True

End Sub

l'userform se ferme quand même lol

Bonjour

ced_le_dingue a écrit :

l'userform se ferme quand même lol

Je suis curieux et demande à voir ton fichier

Bonjour,

Heuuu, question un peu saugrenue..

Tu met bien le code dans le module de l'UserForm, pas dans un module Bas ? comme par exemple Module1 ?

A+

Bonjour lermite et banzai,

Oui lermite, lol pas de soucis je l'ai bien mis dans le module de l'userform. Je reconnais que je ne suis pas très futé tu as donc bien fais de poser la question. De toute façon, pour que ça ne fonctionne pas, j'ai fais une connerie c'est certain.

Voici mon code ( il n'a pas beaucoup changé depuis ces dernier jours en fait ;( ) :

Merci les amis

Bonjour

Pas de souci avec ce code

Après avoir affecter au bouton "Ajouter onglet" la macro "Lance2"

L'Userform "Ajouter" s' affiche bien à l'écran, Dans la ComboBox_mois il y a novembre et dans la ComboBox_année il y a 2013

Que ce soit avec la croix de fermeture ou le bouton annuler j'obtiens le message que je ne peux renommer.......etc

et l'Userform ne se ferme pas

Pour cela il suffit que je modifie seulement 1 des 2 combobox

Donc je ne sais pas ce qui se passe si chez toi tu arrives à fermer

Merci banzai.

Oui voilà, en fait j'aurai du préciser que je voudrais que cela marche aussi si on appuie sur le boutton "valider"...

Je viens de rajouter cela au début de Private Sub CommandButton1_Click() :

For i = 1 To Sheets.Count
        If UCase(Sheets(i).Name) = UCase(ComboBox_mois.Value & " " & ComboBox_année.Value) Then
            MsgBox "Attention, l'onglet : " & ComboBox_mois.Value & " " & ComboBox_année.Value & " existe déjà." & Chr(10) & Chr(10) & "Vous ne pouvez pas créer un onglet déjà existant."
            CommandButton1.Cancel = True
        End If
    Next

Cela a l'air de marcher, sauf que ça crée quand même un onglet et m'affiche le message d'erreur windows ( impossible de renommer une feuille comme une autre feuille [...] )

Bonjour

Ce code est à ajouter AVANT la création de la feuille et ne pas utiliser CommandButton1.Cancel = True (cela ne veut rien dire)

mais essayes ceci

Private Sub CommandButton1_Click()

For i = 1 To Sheets.Count
        If UCase(Sheets(i).Name) = UCase(ComboBox_mois.Value & " " & ComboBox_année.Value) Then
            MsgBox "Attention, l'onglet : " & ComboBox_mois.Value & " " & ComboBox_année.Value & " existe déjà." & Chr(10) & Chr(10) & "Vous ne pouvez pas créer un onglet déjà existant."
            Exit Sub
        End If
    Next
'Ajout d'un nouvel onglet

    'copie du dernier onglet présent
    Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count)

    'renommer onglet ajouté
    Sheets(Sheets.Count).Name = ComboBox_mois.Value & " " & ComboBox_année.Value

Oui oui je l'ai bien mis avant. Merci banzai en fait c'était tout bête.

nb : j'ai lu l'aide de cancel : Renvoie ou définit une valeur indiquant si un bouton de commande est le bouton Annuler sur une feuille.

j'ai donc naïvement mis commandbutton.cancel car j'ai du penser à tort que commandbutton est un objet alors que c'est un contrôle...

Merci encore banzai

Rechercher des sujets similaires à "queryclose userform fonctionne pas"