Erreur 91 Variable objet ou variable de bloc With non définie...

  • Initiateur de la discussion Initiateur de la discussion avekash
  • 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 !

avekash

XLDnaute Nouveau
Bonsoir chers amis du du forum

Je viens une fois encore vers vous solliciter votre précieux coup de main.
En effet je suis sur un projet de dévisage qui a assez avancé et je rame sur une partie de mon code vba qui devrait se comporté ainsi: Mon classeur comporte plusieurs feuilles (PRORMA, FACTURE, PROSPECT...) dont je veux qu'un seul s'affiche une fois le bouton (EDITER PROFORMA, EDITER FACTURE...) cliquer a partir de ma USERFORM jusque là pas de problème. Seulement une fois les feuilles que je souhaite masquées le sont effectivement je n'arrive plus a partir de la même procédure à les afficher. J'obtiens un message d'erreur (Erreur 91 Variable objet ou variable de bloc With non définie) dans le code que j'ai mis afin d'afficher la feuille au cas ou elle serait cachée. Voici le bout de code :


' Afficher la feuille si caché
Dim PROFORMA As Sheets

With PROFORMA
If PROFORMA.Visible = xlSheetHidden Then ' La ligne qui cause le bug
PROFORMA.Visible = xlSheetVisible
PROFORMA.Select
End If
End With



Par ailleurs voici le code entier contenu dans le bouton :

Private Sub CommandButtonPro_Click()

'Declaration

Dim Jour As String, Mois As String, Annee As String, Num As Double
Jour = Format(Date, "dd")
Mois = Format(Date, "mm")
Annee = Format(Date, "yy")

' Afficher la feuille si caché

Dim PROFORMA As Sheets

With PROFORMA
If PROFORMA.Visible = xlSheetHidden Then ' La ligne qui cause le bug
PROFORMA.Visible = xlSheetVisible
PROFORMA.Select
End If
End With

' Numéro de la Proforma

Num = CDbl(Left(Sheets("PROFORMA").Range("F6").Value, 4))
Sheets("PROFORMA").Range("NumProforma").Value = Format(Num + 1, "0000") & "-" & Jour & Mois & "-" & Annee

'Transférer les données dans la feuille excel PROFORMA

Range("PROFORMA!NomClient").Value = TextProClient.Value
Range("PROFORMA!NomInterlocuteur").Value = TextProContact.Value
Range("PROFORMA!NumTeleph").Value = TextProTeleph.Value
Range("PROFORMA!NumFax").Value = TextProFax.Value
Range("PROFORMA!NumMobile").Value = TextProCell.Value
Range("PROFORMA!AdressMail").Value = TextProEmail.Value
'Vérification des données texte et numérique avant transfer dans la feuille excel Facture

If UserFormCotProFac.TextProClient.Text = "" Then
MsgBox "Veuillez renseigner le champ Client."
UserFormCotProFac.TextProClient.SetFocus
Exit Sub
End If

If UserFormCotProFac.TextProContact.Text = "" Then
MsgBox "Veuillez renseigner le champ Contact."
UserFormCotProFac.TextProContact.SetFocus
Exit Sub
End If

If UserFormCotProFac.TextProTeleph.Text = "" Then
MsgBox "Veuillez entrer un N° de Téléphone."
UserFormCotProFac.TextProTeleph.SetFocus
Exit Sub
End If

If UserFormCotProFac.TextProFax.Text = "" Then
MsgBox "Veuillez entrer un N° de Fax."
UserFormCotProFac.TextProFax.SetFocus
Exit Sub
End If

If UserFormCotProFac.TextProCell.Text = "" Then
MsgBox "Veuillez entrer un N° de Cellulaire."
UserFormCotProFac.TextProCell.SetFocus
Exit Sub
End If

If UserFormCotProFac.TextProEmail.Text = "" Then
MsgBox "Veuillez saisir un email"
UserFormCotProFac.TextProEmail.SetFocus
Exit Sub
End If

'Conversion des formats des données textes saisis

UCase (UserFormCotProFac.TextFacContact.Text)
Application.WorksheetFunction.Proper (UserFormCotProFac.TextFacContact.Text)

'Vérification des données numérique

If Not IsNumeric(TextProTeleph) Then
MsgBox "Veuillez saisir un N° Fixe (Ex:20 21 22 23)"
End If
'Cacher le programme

UserFormCotProFac.Hide

'Afficher le classeur excel

Application.Visible = True

' Sélectionner la feuille PROFORMA et cacher les autres feuilles du classeur

Dim FiaFloua As Worksheet
On Error Resume Next
Application.DisplayAlerts = False
For Each FiaFloua In Worksheets
If (FiaFloua.Name <> "PROFORMA") Then
FiaFloua.Visible = xlSheetHidden
End If
Next
Application.DisplayAlerts = True


' Vider les cellules du model avant son utilisation

Range("C17:F34").Select
Selection.ClearContents
Range("G17:G34").Select
Selection.ClearContents
Range("H17:H34").Select
Selection.ClearContents

End Sub
Merci pour votre aide.
 
Re : Erreur 91 Variable objet ou variable de bloc With non définie...

Bonjour,

A priori ta variable n'est pas initialisée et mal typée, essaye avec ceci :
Code:
Dim PROFORMA As Worksheet
Set PROFORMA = Sheets("nomfeuille")
If PROFORMA.Visible = xlSheetHidden Then PROFORMA.Visible = xlSheetVisible

bon après midi
@+
 
Re : Erreur 91 Variable objet ou variable de bloc With non définie...

Merci pierrot pour ta promptitude

j'essaie ta solution et je te fais le retour

@ tout de suite.

Bonjour,

A priori ta variable n'est pas initialisée et mal typée, essaye avec ceci :
Code:
Dim PROFORMA As Worksheet
Set PROFORMA = Sheets("nomfeuille")
If PROFORMA.Visible = xlSheetHidden Then PROFORMA.Visible = xlSheetVisible

bon après midi
@+
 
- 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
9
Affichages
201
Réponses
4
Affichages
177
Réponses
2
Affichages
153
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
4
Affichages
461
Retour