Lier deux UserForm dans tableau

Bonjour,

J'ai un tableau excel nommé "base" que je remplis à l'aide de plusieurs UserForm. A chaque saisie je créer une nouvelle ligne dans mon tableau. Dans le premier UserForm, je rentre une date et un temps, dans le deuxième la même date, un autre temps et d'autres informations, etc... Bref, je dois obligatoirement avoir plusieurs UserForm pour le même tableau.

J'aimerais cependant ne plus à avoir à renseigner la date dans mon deuxième UserForm car elle est systématiquement la même que dans mon premier. Les dates apparaissent dans la même colonne à chaque création de ligne, à savoir Cells(1, 1). J'aimerais donc rentrer dans mon deuxième UserForm un code qui me permette de dire Cells(1, 1) = Cells(1, 1) juste au-dessus.

J'ai bien pensé à rentrer une formule excel directement dans le tableau, mais ça empêcherait mon premier UserForm de rentrer la date automatiquement après la saisie avec un conflit d'informations.

Voilà mon code pour la date le premier UserForm : .Cells(1, 1) = DateValue(Format(TextBox1.Value, "dd/mm/yyyy"))

L'idée est donc bien de ne plus être dépendant d'une TextBox pour retrouver exactement la même date dans la ligne suivante de mon tableau.

Merci pour votre aide.

Bonjour albanos, le forum,

Pour résumer, tu veux que la textbox de ton UserForm2 est la même valeur que la TextBox de ton Userform1 ?

Quelque chose dans ce genre ?

UserForm2.TextBox1.Value = UserForm1.TextBox1.Value

Salut xorsankukai,

Merci de ta réponse mais je voudrais carrément ne plus avoir de TextBox dans mon UserForm2 et mettre plutôt un code pour que la date soit automatiquement rentrée par Excel en s'appuyant sur celle du UserForm1.

J'ai essayé quelque chose dans le même style que toi : .Cells(1, 1) = UserForm1.TextBox1.Value

Ton idée n'est pas mauvaise mais je n'ai pas la date rentrée dans le UserForm1 mais sa valeur rentrée dans les propriétés. Les dates saisie variant selon le besoin, je ne peux pas pré-enregistrer la date dans les propriétés.

Re,

Je t'avoue que je ne comprends pas tout,

code pour que la date soit automatiquement rentrée par Excel en s'appuyant sur celle du UserForm1.

mais je n'ai pas la date rentrée dans le UserForm1 mais sa valeur rentrée dans les propriétés

Peut-être que si tu joignais un fichier.....

Voilà un fichier simplifié, j'espère que ça sera plus clair pour toi

Re,

Malgré ton fichier, je ne suis guère plus avancé ,

En gros, si tu saisies une déclaration d'aléas ou une déclaration de production/rebuts, tu souhaites récupérer la date de la déclaration du temps d'ouverture précédemment créée ?

Je suppose qu'il y a plusieurs machines en plus des 3 équipes, des dates différentes...

Trop compliqué pour moi, désolé.

Nul doute qu'un pro du forum saura t'aider ou te conseiller à la conception de ton formulaire

Pourquoi ne pas utiliser un DTpicker pour ne pas avoir à taper la date à chaque fois ?

Le DTpicker affiche la date du jour automatiquement, sinon tu clique sur le calendrier pour choisir une date, pas de saisie.

44dtpicker.xlsm (22.20 Ko)

Aha pas de problème, je vais me montrer patient !

Oui c'est la date de la déclaration d'ouverture que je veux récupérer. Après le nombre de machines et d'équipes importent peu, j'ai envoyé un fichier simplifié justement parce que ça n'influe pas sur la date. Je n'ai peut-être pas été clair, je ne suis pas un habitué de vba et encore moins des forums excel

Merci quand même de m'avoir accordé un peu de ton temps. Je ne connaissais pas le DtPicker, même s'il ne répond pas exactement à ma demande je le garde dans un coin pour m'en servir un des ces jours, merci de l'idée

Je vais essayé d'expliquer un peu mieux pour ceux qui auraient la gentillesse de m'aider. Après avoir déclarer le temps d'ouverture, je passe à la déclaration de production et d'aléas. Ensuite je re-déclare un temps d'ouverture pour la seconde équipe, avec déclaration de prod et d'aléas, et je le refais une troisième fois. Toutes ces déclarations sont passées à la même date, mais qui n'est pas celle d'aujourd'hui et pas nécessairement le lendemain. Il faut donc la saisir manuellement au moment de la déclaration d'ouverture. Je voudrais cependant ne pas à avoir à le refaire pour toutes les déclarations. Celle d'ouverture de l'équipe 1 étant la première (à saisir manuellement), j'aimerais que les déclarations qui suivent la prenne en considération et donc inscrire la date dans Cells(1, 1) de mon tableau "base" de manière automatique. Avec le fichier envoyé un peu plus haut j'espère que c'est compréhensible

bonsoir

C est comme vous voulez parler avec Excel, il parle et vous dit : Vous voulez monsieur garder la même dates ? Et vous le dite mais oui vous ne comprenez pas …… et lui vous dite pardon monsieur je vais garder la même date ! Ensuite vous le dite mais non vous ne comprenez pas (……). Si est le cas, une machine comme Excel ne peut pas le faire

Si j'ai bien compris je vous propose de demander a Excel d Afficher un message dans une boîte de dialogue, et vous cliquez sur un bouton (oui gardez la même date ou non enter une nouvelle date).

Private Sub UserForm_Initialize()
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "Souhaitez-vous gardez la meme date?"    ' Définit le message.
Style = vbYesNo + vbCritical + vbDefaultButton2    ' Définit les boutons.

' Affiche le message.
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then    ' L'utilisateur a choisi Oui.
    TextBox1.Enabled = False
    ' Alors essayez de recupier l anciemme date par TextBox1.value = cell(1,1)
Else    ' L'utilisateur a choisi Non.
    TextBox1.Enabled = True
    'essyez de entre une nouvelle date
End If
End Sub

Bonjour Amir,

Tout d'abord merci de ton aide.

J'aime bien l'idée mais elle ne me permets pas d'avoir la date que je souhaite. Je m'explique : si je mets que je veux une nouvelle date dans ma déclaration d'ouverture, je peux la changer ça marche impec. Par contre quand je mets que je veux garder la même date dans mes déclarations suivantes, Excel ne me trouve pas celle que je viens de remplir dans ma déclaration d'ouverture et je me retrouve avec une date qui ne convient pas. Est-il possible de lier les textbox des userforms pour que la date rentrée dans le userform1(déclaration d'ouverture) se retrouve dans les userform2 et 3 ?

bonsoir

    Private Sub UserForm_Initialize()
    Dim Msg, Style, Title, Help, Ctxt, Response, MyString
    Msg = "Souhaitez-vous gardez la meme date?"    ' Définit le message.
    Style = vbYesNo + vbCritical + vbDefaultButton2    ' Définit les boutons.

    ' Affiche le message.
    Response = MsgBox(Msg, Style, Title)
    If Response = vbYes Then    ' L'utilisateur a choisi Oui.
        ' Alors essayez de recupier l anciemme date par TextBox1.value = cell(1,1)
        NondeUserformactive.TextBox1.Value = sheets("lenomdelafeuillede déclaration d'ouverture").range("A1 >>>  ou tu a inscrit cette date").value
         ' ici 
       TextBox1.Enabled = False

    Else    ' L'utilisateur a choisi Non.
       TextBox1.Enabled = True
        'essyez de entre une nouvelle date
    End If
    End Sub

Bonjour Amir,

J'ai finalement réussi hier en passant ma variable en public et la faire reprendre dans mes codes par la suite.

Ton code fonctionne mais ne répond pas exactement à ce que je voulais. Merci quand même, étant peu habitué à vba c'est cool d'avoir des gens qui viennent aider

A bientôt sur un autre post j'espère

Rechercher des sujets similaires à "lier deux userform tableau"