Sur userform combo label textbox

Bonjour,

Mon tableau s'étalait en longueur dans le fichier et je me suis dis qu'il serait plus simple dans certains cas d'utiliser un userform pour concentrer les saisies.

Je suis bloqué sur mon projet de USEERFORM. il faut faire un double clic dans la colonne A pour l'ouvrir.

En pj le fichier notamment 5 erreurs que je n'arrive pas à résoudre

test9 1

1ère erreur:

je n'arrive toujours pas à enlever les zéros dans la combobox. J'avais fais des demandes partielles pour essayer de comprendre et d'adapter mais finalement jue n'y arrive pas.

test9 2

Deuxième erreur

j'ai la formule dans le tableau qui fait le calcul simple de surface. Je récupère l'information dans le userform.

En fait j'aimerais pouvoir soit récupérer l'information si elle est déjà rentrée dans le tableau, soit faire le calcul en fonction des données rentrées dans le userform.

test9 3

Troisième erreur :

J'ai un combobox et un label. Je récupère l'information du tableau pour le combobox et le label.

J'aimerais pouvoir mettre a jour le label lorsque je change le combobox

test9 4

Quatrième erreur :

J'ai le label et textbox correspondant à la bordure qui ne doit apparaître seulement si le combobox "Code plancher" commence par le code "tp". j'ai essayé de faire quelque chose avec la fonction gauche mais sans succés.

test9 5

Cinquième erreur :

Je voudrais pouvoir passer à la ligne suivante dans le tableau pour réaliser un nouveau local (enregistrer la ligne en cours comme le bouton valider puis passer à la ligne en dessous, faire le readrecord...) afin d'enchainer la saisie sans quitter la fenêtre pour double cliquer sur la nouvelle cellule. est ce possible ?

test9 6

Voilà.

En espérant que je n'ai perdu personne dans mon cafouillage

Si quelqu'un peut m'aider ce serrait super.

Le lien de téléchargement car tros gros pour le forum

Bonjour

1ère erreur:

je n'arrive toujours pas à enlever les zéros dans la combobox. J'avais fais des demandes partielles pour essayer de comprendre et d'adapter mais finalement jue n'y arrive pas.

test9.2.JPG

Normal que tu es ce soucis avec ce code

Me.ComboBox1.List = Worksheets("DIVERS").Range("h2:h5001").Value

Troisième erreur :

J'ai un combobox et un label. Je récupère l'information du tableau pour le combobox et le label.

J'aimerais pouvoir mettre a jour le label lorsque je change le combobox

Utilise l'évènement After_Update de ta Combobox

Quatrième erreur :

J'ai le label et textbox correspondant à la bordure qui ne doit apparaître seulement si le combobox "Code plancher" commence par le code "tp". j'ai essayé de faire quelque chose avec la fonction gauche mais sans succés.

Même chose pour l'évènement

Bon courage

Help

Est ce trop compliqué à faire ?

Bonjour à tous,

Un souci à la fois ... Souci_1

Macro Private Sub ReadRecord() du UserForm ...

Remplace Me.ComboBox1.List = Worksheets("DIVERS").Range("h2:h5001").Value

Par ...

Dim X As Integer
    Me.ComboBox1.Clear
    For X = 2 To 5001
        If Worksheets("DIVERS").Cells(X, "H").Text > 0 Then Me.ComboBox1.AddItem Worksheets("DIVERS").Cells(X, "H").Text
    Next X

C'est un peu moins rapide, mais ça a l'avantage de fonctionner.

Application.ScreenUpdating = True au début de la macro peut aider pour la rapidité.

ric

Nickel pour le premier problème.

Merci

Bonjour à tous,

Souci_2 >>>

Un essai ...

Macro Private Sub ReadRecord() du UserForm ... > la partie gérant les colonnes N et O.

ainsi que Me.textbox12

ainsi que Me.textbox13

Souci_3 et souci_4 complétés. Fichier joint changé...

Le formulaire aurait besoin d'optimisation; il est trop grand. À moins que tu sois le seul à utiliser ton fichier.

Le poids du fichier est beaucoup trop lourd, pour le peu de données. Il serait important de mieux gérer cela.

ric

Merci de quel optimisation parles tu?

Est ce que cela viens de la formule matricielle qui vas sur 5000 lignes colonne i . Je voulais une liste déroulante trié et sans doublons.

J'ai utilisé une formule de monsieur Boisgontier mais je n'ai peu être pas utilisée la bonne .

En moyenne par fichier, je traite de 3000 à 8000 lignes environ.

J'ai fait un fichier à 5000 lignes et j'ai fait une macro qui dupliques les lignes au besoin.

C'est peut être ça le problème de lourdeur...

Bonjour à tous,

Prenons l'exemple de la feuille "SAISIE". Nul besoin de créer une structure de 5000 lignes.

Il est possible de faire ajouter les lignes automatiquement.

La feuille "DIVERS" ... il semble que la matricielle de la colonne H soit inutile.

La fonction fait bien le travail. Il n'y a qu'à ajuster la formule de H2 > ce qui peut être fait en même temps que l'ajout de ligne en feuille "SAISIE".

Cela fera un fichier beaucoup plus léger.

ric

Prenons l'exemple de la feuille "SAISIE". Nul besoin de créer une structure de 5000 lignes.

Il est possible de faire ajouter les lignes automatiquement.

Ok. je vais faire un fichier plus court avec un tableau structuré. j'ai déjà fait la macro pour l'ajout des lignes ) ça à l'air de suivre...

La feuille "DIVERS" ... il semble que la matricielle de la colonne H soit inutile.

La fonction fait bien le travail. Il n'y a qu'à ajuster la formule de H2 > ce qui peut être fait en même temps que l'ajout de ligne en feuille "SAISIE".

Qu'entends tu par ajuster la formule en H2? je fais comment concrètement ? J'ai fait ça car je voulais pouvoir chercher à la fois sur le fichier excel et à la fois sur l'userform en fonction e ce qui est plus rapide, "certaines fois il est plus simple de copier un pavé de ligne et de modifier ce qui nécessaire, ou des fois plus simple de saisir dans le userform.

La procédure voudrait du coup de copier/coller des lignes quasi identique et de passer par le userform pour faire les petites modifications.

Bonjour,

Les soucis 1,2,3,4 seraient corrigés. À tester si cela convient.

Voir le fichier > https://forum.excel-pratique.com/viewtopic.php?p=864566#p864566

Pour le 5e souci > bouton Passer au local suivant, si je comprends bien, il n'y a rien de fait. Est-ce bien cela ?

Private Sub CommandButton1_Click()
    WriteRecordmaj     ' je ne trouve pas cette macro.
End Sub

ric

Oui j'avais commencé une macro de mise à jour mais ça ne convenais pas.

Je trouvais mieux de passer à la ligne suivante et refaire un reedrecord/writerecord.

Je ne sias pas comment passer à la ligne du dessous

Bonjour,

J'ai oublié de mettre le lien vers le fichier modifié. https://forum.excel-pratique.com/viewtopic.php?p=864566#p864566

ric

Pour le souci numéro 2:

Est il possible d'afficher directement le calcul lorsque l'on modifie ou création de valeur.

Lorsque je saisie les longueur ou largeur, le calcul de surface disparait dans le userform mais ne se calcule pas ?

Ric pour le problème n°04 j'ai modifié le code comme ça pour coller à ce que je veux

Private Sub ComboBox2_Change()

    '' ric >> gestion du Label49 via Combobox2 et Textbox30
    Me.Label49.Caption = Me.ComboBox2.Column(1)
    If Left(Me.ComboBox2.Column(0), 2) = "tp" Then
        'Me.TextBox30.Value = Me.ComboBox2.Column(1)
        Me.TextBox30.Visible = False
       Me.Label61.Visible = False

    Else
        'Me.TextBox30.Value = ""
         Me.TextBox30.Visible = True
       Me.Label61.Visible = True
    End If
End Sub

Pour le souci numéro 2:

Est il possible d'afficher directement le calcul lorsque l'on modifie ou création de valeur.

Lorsque je saisie les longueur ou largeur, le calcul de surface disparait dans le userform mais ne se calcule pas ?

Remplace ces deux macros ...

Private Sub TextBox12_Change()
    ' ric > gestion colonne N vide ou pas
    With Worksheets("SAISIE")
        If Me.TextBox12.Value <> "" Then
            Me.Label22.Caption = Me.TextBox12.Value
        Else
            Me.Label22.Caption = ""
        End If
    End With
    TextBox13_Change
End Sub

Sub TextBox13_Change()
    ' ric > gestion colonne O vide ou pas
    With Worksheets("SAISIE")
        If Me.TextBox12 <> "" Then Me.Label22 = CInt(Me.TextBox12.Value)
        If Me.TextBox12 <> "" And Me.TextBox13.Value <> "" Then _
           Me.Label22 = CInt(Me.TextBox12) * CInt(Me.TextBox13)
    End With
End Sub

ric

Merci c'est nickel pour le souci N°02

Bonjour,

J'ai eu un empêchement, la suite demain ...

ric

Bonjour,

Souci_5 > le changement de ligne (de local) ...

Un essai ... pas trop testé ... il est tard dans la nuit ...

Private Sub CommandButton1_Click()  '' local suivant
    '''WriteRecordmaj
    If Worksheets("SAISIE").Cells(iROW + 1, "A") <> "" Then
        iROW = iROW + 1
        Call ReadRecord
    Else
        MsgBox " Le local actuel est le dernier local à atteindre. "
    End If
End Sub

Private Sub ComboBox2_Change()

    '' ric >> gestion du Label49 via Combobox2 et Textbox30
    If Worksheets("SAISIE").Cells(iROW, "T") <> "" Then
        Me.Label49.Caption = Me.ComboBox2.Column(1)
        If Left(Me.ComboBox2.Column(0), 2) = "tp" Then
            'Me.TextBox30.Value = Me.ComboBox2.Column(1)
            Me.TextBox30.Visible = False
            Me.Label61.Visible = False
        Else
            'Me.TextBox30.Value = ""
            Me.TextBox30.Visible = True
            Me.Label61.Visible = True
        End If
    End If
End Sub

ric

Merci Ric.

Tout fonctionne, c'est génial.

J'ai revu la partie writerecord avec les boutons "valider" et "passer" à la ligne suivante. Du coup quand on clique sur le bouton de la ligne suivante ça valide la saisie d'avant (logique mais j'avais le défaut).

Il ne me reste plus qu'a adapter le reste maintenant que je comprend un petit peux mieux (pas tout mais bon ça viendras à force.....).

Bonne continuation et encore merci à toi et a vous le fil.

Sans vous on n'avancerais pas dans nos fichiers et heureusement que vous êtes là.

@bientôt

Rechercher des sujets similaires à "userform combo label textbox"