Plusieurs problèmes

bonjour

voila j'ai plusieurs problèmes a résoudre:

1)dans Ajout d'un entretien je souhaiterais faire des déroulés des 3case "id scada, localisation, désignation" en fonction du tableau2.

2)dans "description de l'intervention" et "pièces et référence installées" seulement une ligne s'intègre dans la case je voudrais plusieurs ligne

3) quand je clique sur "ajout d'un entretien" l'usiforme ne garde pas toujours ca grande taille, pour le remettre en normale il faut que je retourne dans l'onglet développeur et que je le ragrandisse.

je suis débutant et ce que j'ai fait fonctionne avec surement des facon plus simple ...., merci d'etre cool

Salut,

Quelle est la version de ton Excel ?

Microsoft 365 Apps for business

Re,

Donc vire toutes les références de RowSource des Listes déroulantes.

Et dans l'initialisation du formulaire tu rempli les listes.

Private Sub UserForm_Initialize()
    Cbx_id_scada.List = Evaluate("=SORT(UNIQUE(Tableau2[ID Scada]))")
    Cbx_localisation.List = Evaluate("=SORT(UNIQUE(Tableau2[Localisation]))")
    Cbx_designation.List = Evaluate("=SORT(UNIQUE(Tableau2[Désignation]))")
    Cbx_intervenant.List = Range("Tableau3").Value
    Cbx_intervenant_2.List = Range("Tableau3").Value
End Sub

Cbx_Date n'a pas lieu d'être remplace la par une zone de texte: et tu ajoute cette ligne dans l'initialisation:

Tbx_Date = Format(Date, "Short Date")
' // Et pour les heures
Tbx_Heure.Value = Format(Now, "Short time")

2)dans "description de l'intervention" et "pièces et référence installées" seulement une ligne s'intègre dans la case je voudrais plusieurs ligne

Pas compris ou est le bug ?

merci jean-paul

par contre si je choisi dans ID scada "A4.1.1" j'aimerai que automatiquement ca recherche les possibilité des autres case et ca remplisse automatiquement les 2 autre cases si une seul option, si je choisi dans localisation "PR1" ca me propose ce qui reste de lier via le tableau. désolé si je suis pas très claire

la par exemple il ne m'a ajouter que "verin" dans entretien effectué alors que j'ai écris plusieurs ligne différente

image

Re,

Tu dois faire des modifications pour cela.
Dans le code du formulaire tu ajoutes cette fonction :

'@Description "Récupère l'ensemble des entrées des Zone de liste."
Private Function GetChoix(controlName As String) As String
    With Me.Controls(controlName)
        If .ListCount > -1 Then
            Dim counter As Long
            For counter = LBound(.List) To UBound(.List)
                Dim tempString As String
                ' // Sur une seule ligne (Préféré)
                tempString = tempString & .List(counter) & "; "
                ' // Sur plusieurs lignes
                'tempString = tempString & .List(counter) & Chr(13)
            Next
            ' // Sur une seule ligne (Préféré)
            If Right$(tempString, 2) = "; " Then tempString = Left$(tempString, Len(tempString) - 2)
            ' // Sur plusieurs lignes
            'If Right$(tempString, 1) = Chr(13) Then tempString = Left$(tempString, Len(tempString) - 1)
        End If
    End With
    GetChoix = tempString
End Function

Pus tu modifie le code du bouton transfert comme ceci:

'procedure d'ajout a la base
Private Sub transfert_Click()
    Message = vbnulstring
    If Me.Cbx_id_scada = vbnulstring Then
        Message = Message & Chr(10) & "Veuillez entrer un ID"
    End If
    If Me.Cbx_localisation = vbnulstring Then
        Message = Message & Chr(10) & "Veuillez entrer une localisation"
    End If
    If Me.Cbx_designation = vbnulstring Then
        Message = Message & Chr(10) & "Veuillez entrer une designation"
    End If
    If Me.Cbx_Date = vbnulstring Then
        Message = Message & Chr(10) & "Veuillez entrer la Date d'intervention"
    End If
    If Me.Tbx_heure = vbnulstring Then
        Message = Message & Chr(10) & "Veuillez entrer le nombre d'heure de la machine"
    End If
    If Me.Cbx_intervenant = vbnulstring Then
        Message = Message & Chr(10) & "Veuillez entrer le nom de l'intervenant"
    End If
    If Me.choixev.ListCount = 0 Then
        Message = Message & Chr(10) & "Veuillez entrer les interventions effectué"
    End If
    If Me.Tbx_heure_intervention = vbnulstring Or Not IsDate(Me.Tbx_heure_intervention) Then
        Message = Message & Chr(10) & "Veuillez entrer le temps total d'intervention au format date ex: 10:15"
    End If
    If Me.choixev_pieces.ListCount = 0 Then
        Message = Message & Chr(10) & "Veuillez entrer les pieces instalé"
    End If
    If Message <> vbnulstring Then
        MsgBox Message
        Exit Sub
    End If
    Dim n As Long

    Dim itemRow As Excel.ListRow
    Set itemlistrow = Range("Tableau1").ListObject.ListRows.Add
    With itemlistrow
        .Range(.Parent.ListColumns("id_scada").Index).Value = Cbx_id_scada.Value
        .Range(.Parent.ListColumns("localisation").Index).Value = Cbx_localisation.Value
        .Range(.Parent.ListColumns("designation").Index).Value = Cbx_designation.Value
        .Range(.Parent.ListColumns("date").Index).Value = Cbx_Date.Value
        .Range(.Parent.ListColumns("intervenant").Index).Value = Cbx_intervenant.Value
        .Range(.Parent.ListColumns("intervenant2").Index).Value = Me.Cbx_intervenant_2.Value
        .Range(.Parent.ListColumns("heure machine").Index).Value = Tbx_heure.Value
        .Range(.Parent.ListColumns("entretien effectué").Index).Value = GetChoix("choixev")
        .Range(.Parent.ListColumns("piéce installé").Index).Value = GetChoix("choixev_pieces")
        .Range(.Parent.ListColumns("temps d'intervention").Index).Value = Tbx_heure_intervention.Value

    End With

    Unload Me
End Sub

bonjour

merci jean-paul , je ne dois pas faire les choses correctement car cela ne fonctionne pas. pouvez vous faire l'intégration a mon fichier? que je vais retélécharger.

Re,

Voici une version un poil modifiée...

Regarde particulièrement le fonctionnement du lancement du formulaire d'ajout d'un intervenant. (Bouton AddIntervenant du formulaire ajout_un_entretien)

000437

Il ne faut pas hésiter à utiliser la touche F8 pour faire du pas à pas.

Bonne programmation.

ps; J'ai mis un peu d'ordre dans les noms des contrôles. Il reste beaucoup à faire.

merci beaucoup jean Paul pour le temps passé, j'ai refais une demande pour mon problème de choix suivant le tableau2

Rechercher des sujets similaires à "problemes"