Variable objet ou variable bloc With non définie

Bonjour à tous,

J'ai un userform qui fonctionne avec des option button regroupé dans un frame, avec un bouton valider qui complète un tableau de données.

Tout fonctionne normalement quand un de ces options button est enclenché. Mais je me suis aperçu que lorsque aucun des boutons étaient enclenchés j'avais systématiquement le message :" Variable objet ou variable bloc With non définie"

Il y a quelque chose qui m'échappe mais je n'ai pas trouvé de solution, j'aurais aimé au moins avoir une msgbox demandant de de faire un choix.

Voici le code.

Private Sub valider_at_Click()

With Sheets("AT").Activate

'Declaration des variables
Dim i As Integer

'Affectation des variables
i = 1

'Boucle chacune des cellules de la colonne B
Do While Cells(i, 1) <> ""

Cells(i, 1).Offset(1, 1).Select
i = i + 1 'on incrémente le compteur de la boucle while

    Loop

'affichage des infos du formulaire dans la base de donnée

ActiveCell.Value = nom_at
ActiveCell.Offset(0, 1).Value = prenom_at
ActiveCell.Offset(0, 2).Value = Me.admin1.ActiveControl.Caption
ActiveCell.Offset(0, 3).Value = Me.si.ActiveControl.Caption
ActiveCell.Offset(0, 4).Value = entite_at
ActiveCell.Offset(0, 5).Value = Format(Me.date_at, "DD/MM/YYYY")
ActiveCell.Offset(0, 6).Value = domaines_utilisateurs_at
ActiveCell.Offset(0, 7).Value = Me.statut.ActiveControl.Caption
ActiveCell.Offset(0, 8).Value = commentaires_at

'On test si l'enregistrement est le premier de la table

If ActiveCell.Offset(-1, -1).Value = "N°Assistance" Then
    ActiveCell.Offset(0, -1).Value = 1
Else
    ActiveCell.Offset(0, -1).Value = ActiveCell.Offset(-1, -1) + 1
    Unload Me 'fermeture du formulaire

End If
End With

 End Sub

Je vous remercie par avance

Bonjour,

Si tu essayais comme ça :

With Sheets("AT")

au lieu de :

With Sheets("AT").Activate

dans ton code ?

Hello !

Alors heu. A prendre avec des pincettes (Je suis loin d'être une pro) mais je pense que t'as plusieurs possibilités :

1. Forcer une des valeurs à être forcément séléctionnée (un comportement par défaut ?)

Pour se faire, dans les propriétés de ton option button, tu mets la propriété "Value" à True.

2. Tester si il y a un de tes options button qui est a "True"

je pense que ça devrait donner quelque chose comme ça (J'ai pas tester) :

Dim Ctrl As Control
Dim i As Integer
Set i = 0
For Each Ctrl In LeNomDeTonFrame.Controls
    if Ctrl.Object.Value Then  i = i +1
Next Ctrl
if i = 0 Then Msgbox "veuillez cocher un bouton"

C'est hyper brouillon et je suis sûre que il y a quelque chose de mieux à faire (en regardant la taille de TonFrame.Controls plutôt que faire ça salement avec une boucle For Each, mais tu vois l'idée)

Je sais pas si ça répond à ta question mais j'espère t'avoir aidé.

Bonjour,

amha, tu dois perdre pas mal de temps avec les select dans la boucle...

P.

Bonjour,

Merci de vos réponses, mais ça ne fonctionne pas. Je vais creuser la solution de Zohnya.

redis-moi si tu t'en sors. Je t'apporte volontiers plus de précisions s'il s'avère que ça te décoince un peu.

Merci mais je m'en sors pas j'ai d'autres message d'erreur.

Je réfléchis à utiliser des case à cocher pour voir si cela règle le problème.

ça te dis quoi ?

Salut à tous,

Après plusieurs heures de recherche j'ai abouti à un truc qui ressemble à ce que je voulais et qui fonctionne (désolé d'avance pour les puristes du code

Private Sub valider_at_Click()
Sheets("AT").Activate

Dim k

'**************************** VALIDATION DES DONNEES SAISIES **************************************

'1. verifications des valeurs
m = 0
For Each Ctrl In UserForm1.si.Controls
    k = k + Ctrl.Value
Next Ctrl

For Each Ctrl In Me.Controls
    If TypeOf Ctrl Is MSForms.OptionButton Then

    Cob = Ctrl.Object.Value
        If Cob = "Vrai" Then m = m + 1
    End If
Next Ctrl

If m < 3 Then
Select Case MsgBox("Veuillez compléter les 3 champs SI, ADMIN et STATUT", vbCritical, "Champs manquant")
End Select
'MsgBox ("Veuillez compléter les 3 champs SI, ADMIN et STATUT ")
Exit Sub
End If

With Sheets("AT")

'Declaration des variables
Dim i As Integer

'Affectation des variables
i = 1

'Boucle chacune des cellules de la colonne B
Do While Cells(i, 1) <> ""

Cells(i, 1).Offset(1, 1).Select
i = i + 1 'on incrémente le compteur de la boucle while

    Loop

'affichage des infos du formulaire dans la base de donnée

ActiveCell.Value = nom_at
ActiveCell.Offset(0, 1).Value = prenom_at
ActiveCell.Offset(0, 2).Value = Me.admin1.ActiveControl.Caption
ActiveCell.Offset(0, 3).Value = Me.si.ActiveControl.Caption
ActiveCell.Offset(0, 4).Value = entite_at
ActiveCell.Offset(0, 5).Value = Format(Me.date_at, "DD/MM/YYYY")
ActiveCell.Offset(0, 6).Value = domaines_utilisateurs_at
ActiveCell.Offset(0, 7).Value = Me.statut.ActiveControl.Caption
ActiveCell.Offset(0, 8).Value = recap_at
ActiveCell.Offset(0, 9).Value = commentaires_at

'On test si l'enregistrement est le premier de la table

If ActiveCell.Offset(-1, -1).Value = "N°Assistance" Then
    ActiveCell.Offset(0, -1).Value = 1
Else
    ActiveCell.Offset(0, -1).Value = ActiveCell.Offset(-1, -1) + 1
    Unload Me 'fermeture du formulaire

End If
End With

 End Sub
Rechercher des sujets similaires à "variable objet bloc definie"