Vérification dans un formulaire

M_2193

XLDnaute Nouveau
Bonjour à tous,

Je sollicite votre aide par rapport à mon formulaire. Celui-ci me permet de renseigner l'emprunt d'un matériel à partir d'un bouton (situé sur une feuille excel) et de renseigner les caractéristiques du matériel sur le formulaire qui s'ouvre.
En entrant donc la référence de l'appareil, on a donc toutes ses caractéristiques qui sont affichées dans les textbox. Dès lors qu'on enregistre le formulaire, les données viennent s'inscrire sur la feuille XL.

J'aurais souhaiter réaliser 3 choses :
la première est que l'on ne puisse pas emprunter un appareil qui l'est déjà. Un appareil déjà emprunté et pas encore retourné correspond donc à la non-présence de "OK" dans la colonne "Appareil rendu". J'aimerais donc qu'au moment d'enregistrer une pop-up s'ouvre et indique que l'appareil est déja en cours d'emprunt.

la deuxième serait qu'après avoir enregistré les données du formulaire sur la feuille XL, il efface tous les champs associés aux caractéristiques du matériel pour me demander si le même utilisateur souhaite emprunter un autre matériel.

Enfin j'aimerais que pour la partie "réservation établi" le formulaire reprenne les informations entrées afin de les enregistrer sur d'autres onglets en fonction du numéro d'établi choisi.

voici le lien du fichier : Ce lien n'existe plus

Si quelqu'un pourrait me piloter sur ce coup, j'en serai ravi !
N'hésitez surtout pas si je n'ai pas été assez clair..
 

Paf

XLDnaute Barbatruc
Re : Vérification dans un formulaire

Re,
Pour le point 1: il peut y avoir plusieurs lignes pour le même matériels rendu Ok ou non; il faut que j'affine.

Pour le Point N°2:

Le code aménagé pour saisir un nouvel emprunt pour le même utilisateur (et modification contrôle date):
Code:
Private Sub enreg_Click()
Dim lr As ListRow
Dim Rep
  If IsDate(empr) = True Then
        Range("a1") = empr
    Else
        MsgBox "Format de date incorrect !" & Chr(10) & "La saisie doit être de type jj/mm/aaaa"
        empr.Value = ""
        empr.SetFocus
        Exit Sub
    End If

    If IsDate(retour) = True Then
        Range("a1") = retour
    Else
        MsgBox "Format de date incorrect !" & Chr(10) & "La saisie doit être de type jj/mm/aaaa"
        retour.Value = ""
        retour.SetFocus
        Exit Sub
    End If
    
    Set lr = Feuil5.ListObjects(1).ListRows.Add(1)
    lr.Range(1, 1) = Me.nom
    lr.Range(1, 2) = Me.prenom
    lr.Range(1, 3) = Me.service
    lr.Range(1, 4) = Me.designation
    lr.Range(1, 5) = Me.constructeur
    lr.Range(1, 6) = Me.modele
    lr.Range(1, 7) = Me.numeroate
    lr.Range(1, 8) = DateValue(Me.empr)
    lr.Range(1, 9) = DateValue(Me.retour)
    lr.Range(1, 10) = Me.zone

    ThisWorkbook.Save
      
    Rep = MsgBox("Saisir un autre emprunt pour le même utilisateur ?", vbYesNo)
    If Rep = vbYes Then
      RAZ
    Else
        Unload Me
    End If
        
End Sub

Pour le Point N°3:
Enfin j'aimerais que pour la partie "réservation établi" le formulaire reprenne les informations entrées afin de les enregistrer sur d'autres onglets en fonction du numéro d'établi choisi.

Un peu vague pour entreprendre le code.
Quels autres onglets ? Quelle est la liaison entre N° d'établi et feuille (onglet)?

A+
 

Paf

XLDnaute Barbatruc
Re : Vérification dans un formulaire

Re,

Pour le point 1:
Code:
Private Sub CommandButton2_Click()
Dim ws As Worksheet, WO As Worksheet, DerLig As Long, DerFiltre As Long
Dim c As Range, d As Range, Plage As Range


If TextBox5 = "" Then Exit Sub
Set WO = Worksheets("Formulaire de prêt")
For Each ws In Worksheets
    If ws.Name Like Str_Type & "*" Then
        With ws
            Set c = .Columns(1).Find(TextBox5)
            If Not c Is Nothing Then Exit For
        End With
    End If
Next ws

If c Is Nothing Then
    MsgBox "Référence non trouvée": Exit Sub
Else
    'MsgBox "référence ok"
    '** verifie que le materiel est disponible
    DerLig = WO.Range("G" & Rows.Count).End(xlUp).Row - 1
    
    Set d = WO.Columns(7).Find(TextBox5)
    If Not d Is Nothing Then
        Set Plage = WO.Range("A3:L" & DerLig)
        Plage.Sort Key1:=Range("G3"), Order1:=xlAscending, Key2:=Range _
        ("I3"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _
        :=False, Orientation:=xlTopToBottom, DataOption1:=xlSortTextAsNumbers, _
        DataOption2:=xlSortNormal

        WO.Range("A5").AutoFilter Field:=7, Criteria1:=TextBox5
        DerFiltre = Plage.SpecialCells(xlVisible).Columns(5).Find("*", , , , xlByColumns, xlPrevious).Row
        'MsgBox DerLig
        WO.ShowAllData

        If WO.Cells(DerFiltre, 11) = "" Then
            MsgBox "Ce matériel est en cours d'emprunt"
            TextBox5.Value = ""
            TextBox5.SetFocus
            Exit Sub
        End If
    '** fin verif
    End If
    Me.designation = c.Offset(0, 3)
    Me.constructeur = c.Offset(0, 2)
    Me.modele = c.Offset(0, 4)
    Me.numeroate = c.Offset(0, 0)
    
End If
End Sub

A+
 

M_2193

XLDnaute Nouveau
Re : Vérification dans un formulaire

Re,
Pour le point 1: il peut y avoir plusieurs lignes pour le même matériels rendu Ok ou non; il faut que j'affine.

Pour le Point N°2:

Le code aménagé pour saisir un nouvel emprunt pour le même utilisateur (et modification contrôle date):
Code:
Private Sub enreg_Click()
Dim lr As ListRow
Dim Rep
  If IsDate(empr) = True Then
        Range("a1") = empr
    Else
        MsgBox "Format de date incorrect !" & Chr(10) & "La saisie doit être de type jj/mm/aaaa"
        empr.Value = ""
        empr.SetFocus
        Exit Sub
    End If

    If IsDate(retour) = True Then
        Range("a1") = retour
    Else
        MsgBox "Format de date incorrect !" & Chr(10) & "La saisie doit être de type jj/mm/aaaa"
        retour.Value = ""
        retour.SetFocus
        Exit Sub
    End If
    
    Set lr = Feuil5.ListObjects(1).ListRows.Add(1)
    lr.Range(1, 1) = Me.nom
    lr.Range(1, 2) = Me.prenom
    lr.Range(1, 3) = Me.service
    lr.Range(1, 4) = Me.designation
    lr.Range(1, 5) = Me.constructeur
    lr.Range(1, 6) = Me.modele
    lr.Range(1, 7) = Me.numeroate
    lr.Range(1, 8) = DateValue(Me.empr)
    lr.Range(1, 9) = DateValue(Me.retour)
    lr.Range(1, 10) = Me.zone

    ThisWorkbook.Save
      
    Rep = MsgBox("Saisir un autre emprunt pour le même utilisateur ?", vbYesNo)
    If Rep = vbYes Then
      RAZ
    Else
        Unload Me
    End If
        
End Sub

Salut !

Merci beaucoup pour ton intervention grandement utile ! Le point n°2 fonctionne très bien.
Concernant le point n°1, lorsque j'éxécute, le "RAZ" ne passe pas..Et justement dans l'idée j'aurais aimé qu'il se contente de remettre à zéro toutes les textbox exceptées "nom", "prénom", "service", "date d'emprunt", et "zone d'utilisation".

Pour cela j'ai dans l'idée d'utiliser la commande textbox.texte= "" . Est-ce que cela est choquant ?
 

Staple1600

XLDnaute Barbatruc
Re : Vérification dans un formulaire

Bonsoir à tous

Pour cela j'ai dans l'idée d'utiliser la commande textbox.texte= "" . Est-ce que cela est choquant ?
TextBox1=vbNullstring ou TextBox1=Empty
Comme cela c'est moins choquant,
et je peux alors aller me coucher, l'esprit apaisé et la mine radieuse. ;)

Tu peux aussi boucler sur les contrôles TextBox pour les effacer sélectivement.
Code VBA:
Private Sub RAZ()
Dim Ctrl As Control
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.TextBox Then
Select Case Ctrl.Name
'ici mettre les noms des Textbox à ne pas effacer
Case Is = "Tutu", "Toto", "Titi"
Case Else
Ctrl = Empty
End Select
End If
Next Ctrl
End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 508
Messages
2 089 143
Membres
104 047
dernier inscrit
bravetta