Boutons UserForm inactifs

Bonjour à tous, et d'ores et déjà un grand merci à tous ceux qui auront l'amabilité de m'aider à solutionner mon problème.

J'ai un classeur avec deux feuilles (Feuill1=Saisie) _ (Feuil2=Données)

Lorsque j'ouvre mon Userforme1 selon le chemin (Développeur/Visual Basic/UserForm1/F5) les boutons "RECHERCHE" "VALIDER" et "QUITTER" de mon UserForm fonctionnent sans le moindre problème en ajoutant et récupérant les données de la feuil2 (Données)

Le problème, surgit dès lors que j'ouvre mon UserForme1 avec le bouton "Formulaire" (Feuill1=Saisie). Les boutons"RECHERCHE" et "VALIDER" deviennent inactifs.

Je joins un fichier afin dêtre un peu plus clair dans ma demande.

28essai.xlsm (98.69 Ko)

Bonjour

Le problème, surgit dès lors que j'ouvre mon UserForme1 avec le bouton "Formulaire" (Feuill1=Saisie). Les boutons"RECHERCHE" et "VALIDER" deviennent inactifs.

Aucun souci de mon coté avec votre fichier posté. Cela fonctionne très bien.

Rem : Par contre, je ne vois aucun intérêt à mettre une colonne vide entre chaque champs. C'est une erreur. Evitez cela et faites une vraie base de données

Cordialement

Bonsoir Tiago,

Alors plusieurs choses sur votre fichier

1) si vous ne voulez pas d'ennuis pas la suite, ne séparez pas vos colonnes pas une vide

image

Ce n'est jamais comme ça que l'on procède

2) Renommer vos objets sur l'USF !
au lieu de "CommandButton3" mettez plutôt "CbnRecherche" bien plus explicite

Bien entendu il faudra que le code soit mis dans ce nouvel objet

Private Sub CbnRecherche_Click()

End Sub

3) Quand j'utilise le bouton, je n'ai pas de problème de bouton inactifs

A+

Edit : oups salut Dan désolé, pas rafraichi ma page

Bonsoir,

le problème vient du fait que vous ne faites pas référence à la feuille "Données", donc en lançant le formulaire à partir de la feuille "Saisie", il n'y a aucune donnée à récupérer au niveau de l'instruction : "TextBox1.Value = Cells(no_ligne, 1).Value" car ici Cells fait référence aux cellule de la feuille active, les boutons semblent être inactifs . Vous pouvez ajouter un Sheets("Données"). devant et cela marchera.

Je rejoints Dan et BrunoM45 pour les colonnes vides.

Et j'ajoute qu'il doit y avoir un "Schmurtz" au niveau de la feuille saisie, qui me semble vide mais l'ascenseur vertical me dit le contraire :

image

@ bientôt

LouReeD

Bonsoir,

Autre remarque au niveau de la conception : Si vous avez plusieurs contact dan une même société, il est préférable de créer autant de lignes que de contacts...

Cela facilitera grandement l'utilisation.

Quand vous rechercher un toubib dans un hôpital ou une clinique on ne vous les présente pas tous sur la même ligne n'est ce pas ?

A+

Bonjour a tous,

En tout premier lieu je veux vous remercier de votre réactivité ainsi que de vos conseils que je vais mettre en oeuvre dans le courant de cette journée. Dès que cela sera fait je vous tiendrai au courant .

Galopin01, en ce qui concerne votre commentaire, est-il possible de développer votre vision du fichier. En effet votre remarque me parait pertinente mais je n'arrive pas à visualiser la mise en forme.

Je suis parti du principe, que lorsque l'on ouvre l'UserForme les contacts de la même société apparaissent à des lignes différentes. pouvez-vous m'apporter un éclaircissement complémentaire la dessus.

Bonjour,

Et le problème d'inactivité des boutons ?

@ bientôt

LouReeD

re

Galopin01, en ce qui concerne votre commentaire, est-il possible de développer votre vision du fichier. En effet votre remarque me parait pertinente mais je n'arrive pas à visualiser la mise en forme.

En attendant le retour de Galopin, ce qu'il veut vous expliquer vous devez avoir une ligne par contact peu importe le nom de la société
Donc si vous avez 5 contacts dans la même société, vous aurez 5 lignes
Après pour votre USF, au lieu de mettre des tas de Texbox, vous créez une listbox ou Listview qui lors du choix de société vous listera tous les contacts

Voyez un exemple ici --> https://www.excel-pratique.com/fr/logiciels/gestion-contacts

Cordialement

Edit : pour ma part, ma contribution dans ce fil s'arrête ici.

bonjour à tous

je rejoins un peu mes camarades sur leur remarques

mais j'ajouterais que:

1° quand on travaille une base de données on travaille avec un tableau structuré(LisObject)

son acces en est beaucoup plus simple

2° quand on a beaucoup de colonne il faut taguer les controls dans le userform pour qu'il cible la bonne colonne

ou tout autre méthode qui jummelerais le control a sa colonne

3° le code en devient dérisoire tellement c'est simple

  1. j'ai donc supprimé tes colonne de séparation
  2. j'ai mis une grosse bordure gauche à chaque colonnes
  3. j'ai transformé ta plage en tableau structuré
  4. j'ai viré tout le code du userform
  5. j'y ai codé l'essentiel

et en avant guinguant

le code dans le userform en l'état actuel de son développement lecture /ecriture

Option Explicit
'combobox client
Private Sub ComboBox1_Change()
    Dim lig&, ctrl As Object
    lig = ComboBox1.ListIndex + 1
    If ComboBox1.ListIndex = -1 Then
        For Each ctrl In Me.Controls
            If ctrl.Tag <> "" Then ctrl = ""
        Next
    Else
        For Each ctrl In Me.Controls
            If ctrl.Tag <> "" Then ctrl = Range("Tclients").Cells(lig, Val(ctrl.Tag))
        Next
    End If
End Sub

' Userform1 (Bouton "Valider")'
Private Sub CommandButton1_Click()
    Dim ctrl As Object, expression, rng As Range
    If ComboBox1.ListIndex = -1 Then
        TextBox1 = Application.Max(Range("Tclients[Id client]")) + 1
        Set rng = Range("Tclients").ListObject.ListRows.Add.Range
        expression = "l'ajout"
    Else
        expression = "la modification "
        Set rng = Range("Tclients").ListObject.ListRows(ComboBox1.ListIndex + 1).Range
    End If

    If MsgBox("Confirmez-vous" & expression & " de ces informations dans la base de données?", vbYesNo, "Confirmation") = vbYes Then
        With rng
            For Each ctrl In Me.Controls
                If ctrl.Tag <> "" Then .Cells(Val(ctrl.Tag)) = ctrl
            Next
        End With
    End if
End Sub

    'Userform1 (Bouton "Quitter")
Private Sub CommandButton2_Click()
    Unload UserForm1
End Sub

Private Sub UserForm_Initialize()
    ComboBox1.List = Range("Tclients[Client / Société]").Resize(, 2).Value
End Sub

comme tu vois à coder ça devient tout de suite plus simple

Reste à faire:

1°il te faudra remettre tes colonnes en hyperlink (je vais pas tout faire quand même hein )

2°il te faudra certainement ajouter aussi un control sur un minimum de control remplis ( tu saura faire hein)

le fichier

26essai.xlsm (177.01 Ko)

patricktoulon

Une illustration sommaire de mon propos...

Attention le fichier joint n'est pas exempt de bogues : C'est une adaptation sommaire (en quelques minutes !) d'un autre fichier donc quelques bricoles pourraient rester à revoir mais pour l'essentiel c'est compréhensible et opérationnel...

Mébon ce qu'il faut retenir c'est juste que si ton entreprise à une vingtaine de contacts potentiels voire plus il n'est pas question de mettre 200 colonnes... après pour les finitions c'est au gout du client...

22extiago-vg2.xlsm (69.13 Ko)

A+

Bonjour à tous,

LouReed, mon problème de boutons est résolu après l'ajout dans la ligne de Sheets("Données"). Merci!!!!

Dan, Merci pour les explications explicites en attendant le retour de galopin 01, cela va me permettre de voir la conception de ce projet de manière différente.,

BrunoM45, J'ai suivi votre conseil de Renommer les objets sur l'USF !. Il est force de constater que cela est bien plus lisible 👌

patrikT, J'ai consulté le fichier en retour, c'est stupéfiant de voir de quelle manière ce dernier est simplifie et de plus il fonctionne à merveille. Dès que je peux je vais l'adapter à mes besoins.

D'autre part j'ai suivi votre conseil qui est revenu de manière unanime et j'ai supprimé les lignes vides entre les colonnes. Je vous remercie vraiment tous du temps que vous avez bien voulu m'accorder et vous souhaite d'ores et déja une très belle journée.

Revoir ma réponse de 12:29... revue et corrigée à l'instant.

bonsoir

patrikT, J'ai consulté le fichier en retour, c'est stupéfiant de voir de quelle manière ce dernier est simplifie et de plus il fonctionne à merveille. Dès que je peux je vais l'adapter à mes besoins.

et bien sur ce sera pas mes camarades qui vont me contredire

excel et pseudo BDD = ListObject ( c'est un réflexe )

Mon fichier est maintenant plus clair et fonctionne à merveille merci a tous pour votre aide!!!!

Bonsoir,

je me permet d'écrire au nom de tous : merci pour vos remerciements !

@ bientôt

LouReeD

Rechercher des sujets similaires à "boutons userform inactifs"