* Object défini et initialisé, qui ne s'applique pas sur une formule de tri"

David69400

XLDnaute Junior
Bonsoir le forum,

Dans un petit Userform que j'ai créé pour insérer une cellule dans une colonne de tableau, je n'arrive pas à utiliser les même lignes de codes pour faire un tri de colonne; en fait, c'est tout simplement, le remplacement de la défiition de l'onglet par une variable "object" qui n'est pas reconnu dans mon dernier UF, alors que cela marchait très bien dans les 4 UF précédents.
J'ai vérifier que mes formules sont juste, en me passant du raccourci de la variable object, en écrivant directement le nome de l'ongelt, mais je veux comprendre pourquoi cela ne marche pas dans ce cas précis...

Vous trouverez en ouverture du fichier, un onglet explication qui détaille les lignes de code en mettant en exergue le point que je mentionne ici avec copie d'écran...

merci par avance pour l'aide pédagogique que vous pourrez m'apporter...

bien à vous

David
 

Pièces jointes

  • 2 UF 260514 quattro.xlsm
    292.6 KB · Affichages: 41

Regueiro

XLDnaute Impliqué
Re : * Object défini et initialisé, qui ne s'applique pas sur une formule de tri"

Bonsoir
Ton code marche parfaitement sur mon PC

Autrement enlève ceci, tu l'as 2 fois de suite ?
Code:
    O.Unprotect "mdp"
    'déprotège l'onglet O
A1
 

Regueiro

XLDnaute Impliqué
Re : * Object défini et initialisé, qui ne s'applique pas sur une formule de tri"

Re

Variante pour le bouton Ajout
PHP:
Private Sub CommandButton3_Click()
 i = 1
    If IsNull(Me.Controls("textbox" & i).Value) Or Me.Controls("textbox" & i).Value = "" Then
        MsgBox "Vous devez choisir saisir un nouvel objet de visite"
        Me.Controls("textbox" & i).Value = ""
        Me.Controls("Textbox" & i).SetFocus
        Exit Sub
    End If
    O.Unprotect "mdp"
With O
    .ListObjects("TAB_OBJET_VISITE").ListRows(Range("TAB_OBJET_VISITE").Rows.Count).Range.Select
    Selection.ListObject.ListRows.Add AlwaysInsert:=False
    Selection.Offset(1, 0).Value = Me.Controls("Textbox" & i).Value
        With .ListObjects("TAB_OBJET_VISITE").Sort
            .Orientation = xlTopToBottom
            .Apply
        End With
End With
O.Protect "mdp"
Select Case MsgBox("Souhaitez-vous renseigner un nouveau objet de visite ?", vbYesNo + vbQuestion, "Titre de la MsgBox")
        Case vbYes
            Unload Me
            OBJET_AJOUT.Show
        Case vbNo
        Unload Me
        End Select
[B2].Activate
End Sub
 

David69400

XLDnaute Junior
Re : * Object défini et initialisé, qui ne s'applique pas sur une formule de tri"

Bonjour REGUEIRO, Bonjour le forum

MErci pour votre retour.

Oui, je comprends pas, effectivement cela fonctionne bien avec la variable O...
tant mieux d'ailleurs, cela me réconcilie avec moi même ;)

Merci d'avoir pris le temps de répondre et d'apporter la variante!

A quoi correspond :
[B2].Activate

est- il possible de déclarer en début de code une autre variable pour le nom du tableau ?

ex 'P'
Private O As Object
'déclare la variable O (Onglet)

puis à l'initialisation
Set O = "TAB_OBJET_VISITE"
'définit l'onglet "actif" comme O

qu'en dites vous ?

et encore merci pour cet échange !

David
 

Regueiro

XLDnaute Impliqué
Re : * Object défini et initialisé, qui ne s'applique pas sur une formule de tri"

Bonjour le Forum, David69400

A essayer
Code:
Dim lstObj As ListObject
Set lstObj = Worksheets("xxxx").ListObjects("TAB_OBJET_VISITE").
[B2].Activate
Selection de la cellule B2 de la page Active

A+
 

David69400

XLDnaute Junior
Re : * Object défini et initialisé, qui ne s'applique pas sur une formule de tri"

Bonjour Regueiro


Merci pour la réponse.

Du coup, j'ai pu faire le remplacement de 2 des 3 TAB_xxx pour simplifier le code et n'avoir à changer qu'une fois le nom du tableau.

pourriez vous y jeter un dernier coup d'oeil (onglet EXPLICATION)


MERCI :!!

David
 

David69400

XLDnaute Junior
Re : * Object défini et initialisé, qui ne s'applique pas sur une formule de tri"

Bonjour Le forum, bonjour ROGUEIRO,

J'ai du faire un loupé avec l'envoi de mon fichier attaché hier soir, pourtant c'est en dessous du seuil de taille..:p

bref, merci !!!

David
 

Pièces jointes

  • 2 UF 280514 vu ROGEIRO.xlsm
    276.2 KB · Affichages: 35

Staple1600

XLDnaute Barbatruc
Re : * Object défini et initialisé, qui ne s'applique pas sur une formule de tri"

Bonjour à tous


Une petit question (pour ceux qui sont en Excel 2013)
J'ai ouvert le fichier joint et zou Excel me dit Excel a cesser de fonctionné et se ferme
Cela fait pareil sur vos PC ?

Je vais ressayer avec ce seul fichier ouvert et en ayant fait un peu de ménage dans mon %temp%

EDITION: J'ai pu l'ouvrir mais pas de veine
AieAie.png
(mais je crois que c'est plus mon PC qui me fait signe qu'il faut aller au dodo que le code VBA qui pose problème)

Je verrai demain si cela se reproduit ou pas avec ce fichier.
 

Pièces jointes

  • AieAie.png
    AieAie.png
    43.5 KB · Affichages: 74
  • AieAie.png
    AieAie.png
    43.5 KB · Affichages: 79
Dernière édition:

Regueiro

XLDnaute Impliqué
Re : * Object défini et initialisé, qui ne s'applique pas sur une formule de tri"

Bonjour à Tous

Staple1600
Chez moi pas de problème à l'ouverture du fichier.

David69400
Code dans ton USF "OBJET_AJOUT"
Code:
Private Sub CommandButton3_Click()
' quand on clique sur le bouton #VALIDER

    If IsNull(Me.TextBox1.Value) Or Me.TextBox1.Value = "" Then
        MsgBox "Vous devez choisir saisir un nouvel objet de visite"
        Me.TextBox1.Value = ""
        Me.TextBox1.SetFocus
        Exit Sub
    End If
    O.Unprotect "mdp"
    With Tableau
        'Selection de la dernière ligne du tableau
        .ListRows(Range(Tableau).Rows.Count).Range.Select
            With Selection
                'Insertion d'une Ligne
                .ListObject.ListRows.Add AlwaysInsert:=False
                'on ajoute le nouvel item dans la colonne i dans le tableau
                .Offset(1).Value = Me.TextBox1.Value
            End With
            
            'trie alaphétique du Tableau
            With .Sort
                .Orientation = xlTopToBottom
                .Apply
            End With
    End With
    O.Protect "mdp"
    Select Case MsgBox("Souhaitez-vous renseigner un nouveau objet de visite ?", vbYesNo + vbQuestion, "Titre de la MsgBox")
        Case vbYes
            Unload Me
            OBJET_AJOUT.Show
        Case vbNo
            Unload Me
        End Select
    
    [B2].Activate

End Sub
 

Regueiro

XLDnaute Impliqué
Re : * Object défini et initialisé, qui ne s'applique pas sur une formule de tri"

Bonsoir Le Forum
Avec simplification du code :
Code:
Private Sub CommandButton3_Click()
' quand on clique sur le bouton #VALIDER
Dim LR As ListRow

    If IsNull(Me.TextBox1.Value) Or Me.TextBox1.Value = "" Then
        MsgBox "Vous devez choisir saisir un nouvel objet de visite"
        Me.TextBox1.Value = ""
        Me.TextBox1.SetFocus
        Exit Sub
    End If
    O.Unprotect "mdp"
    With Tableau.DataBodyRange.Select
    Set LR = Selection.ListObject.ListRows.Add(AlwaysInsert:=True)
        LR.Range(1, 1).Value = Me.TextBox1.Value
    End With
        With Tableau.Sort
            .Header = xlYes
            .SortMethod = xlPinYin
            .Orientation = xlTopToBottom
            .Apply
        End With
    O.Protect "mdp"
    Select Case MsgBox("Souhaitez-vous renseigner un nouveau objet de visite ?", vbYesNo + vbQuestion, "Titre de la MsgBox")
        Case vbYes
            Unload Me
            OBJET_AJOUT.Show
        Case vbNo
            Unload Me
        End Select
[B2].Activate
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : * Object défini et initialisé, qui ne s'applique pas sur une formule de tri"

Bonsoir à tous

Ma contribution à la simplification
A la place de
If IsNull(Me.TextBox1.Value) Or Me.TextBox1.Value = "" Then
on peut utiliser, non ?
If Len(TextBox1) =0 Then
 

David69400

XLDnaute Junior
Re : * Object défini et initialisé, qui ne s'applique pas sur une formule de tri"

ROGUEIRO, JM

Merci à vous deux, cf mon autre poste !


j'ai pas encore utilisé la simplification ci-dessus dans le fichier envoyé V10
par contre, c'est certain que je ferai dans ma prochaine version!!!

bon we !


Oyasuminasai

David
 

David69400

XLDnaute Junior
Re : * Object défini et initialisé, qui ne s'applique pas sur une formule de tri"

Bonjour le Forum, Bonjour Regueiro et JM

J'ai reprise vos 2 dernières contributions pour modifier le code du bouton VALIDER.

une question en passant sur le tri alaphabétiques:
il me semble qu'on peut simplifier et enlever les lignes de
With Tableau.Sort
'.Header = xlYes
'.SortMethod = xlPinYin
.Orientation = xlTopToBottom
.Apply
End With

à ca:
With Tableau.Sort
.Orientation = xlTopToBottom
.Apply
End With
ca à l'air de fonctionner, votre avis ?


POur le reste j'ai repris la modifciation de JM sur le test LEN au lieu du double test Null et "".


Nouvelle question:

j'ai rajouté une condition à l'a fin pour revenir au menu:

Select Case MsgBox("Souhaitez-vous renseigner un nouveau objet de visite ?", vbYesNo + vbQuestion, "Titre de la MsgBox")
Case vbYes
Unload Me
OBJET_AJOUT.Show
Case vbNo
Unload Me
Sheets("table02").Visible = xlSheetVeryHidden
Sheets("MENU").Visible = xlSheetVisible
Sheets("MENU").Activate
MENU_INTERFACE.Show
End Select
' continuer à saisir nouvel item ou retour menu


cela fonctionne, en revanche, je n'arrive pas à remplacer
Sheets("table02").Visible par O.Visible
ni Sheets("MENU").Visible par 01.visible etc...

J'ai préalablement déclaré :

Private O As Object
'déclare la variable O (Onglet)

Private O1 As Object
'déclare la variable O (Onglet)

et

Private Sub UserForm_Initialize()
'#INITIALISATION de l'UserForm précisé dans l'onglet ci-après

Set O = Sheets("TABLE02")
'définit l'onglet "actif" comme O

Set O1 = Sheets("MENU")
'définit l'onglet "MENU_INTERFACE" comme O1

est ce qu'il faut déclarer la variable comme "plubique" ?

merci de votre aide,

DAvid

ps: fichier joint
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 450
Messages
2 109 726
Membres
110 552
dernier inscrit
jasson