Formulaire et Base de données

Bonjour Ferdinand, bonjour tout le monde, enfin une tierce personne qui participe ça fait plaisir.

A+

re a tous,

Ok pour les BD que j'ai vu,

Une remarque quand tu crée un nouveau client dans la combobox le nom que tu crée il faudrait qu'il s'affiche dans la textbox (tb2) au lieux de retaper le nom,

bonne journée jean claude

enfin une tierce personne qui participe ça fait plaisir.

Salut GMC, FERDINAND, les curieux...

C'est vrai que c'est rare ! Quand en plus le client suit le sujet et qu'il épluche le code et fait des remarques constructives...

Ça mérite une mention !

Pour cela il suffit de modifier la macro suivante

Private Sub cmdNewCli_Click() 'FrmMask : l'opérateur n'a pas trouvé ce client dans l'archive
Dim i&
   frmMask.Visible = False
   If cboCli.ListIndex = -1 Then Me.tb2 = cboCli.Text 'ligne à rajouter
   Me.tb2.SetFocus
End Sub

A+

Salut GMC, galopin01,

cela fonctionne, GMC sera contant moins de frappe clavier,

quand je peut donner des idées cela me fait plaisir,

a+jean claude

re à tous ,

une autre bug,

1-tu crée le client tu ne met pas sont téléphone

quand tu modifie sa fiche le téléphone ne veut pas s'inscrire dans la BD client,

2-mais quand tu crée le client que tu saisie le tel là il s'inscrit

mais à la modification de la fiche tu ne peut pas le changer

idem pour le prénom

salutation bon app jean claude

Mon ami GMC va se retrouver avec une petit page de lecture... et des travaux pratiques : Devoirs de vacances !

Dans le module de code du usfSAV

Modifier la Sub WriteRecord (à la fin : Rajouter les lignes 40 à 43)

Private Sub WriteRecord(ByVal RecordNumber As Long) ' Ecriture de l'enregistrement
'...
38       End With
39       TriBDC
40    Else
41          i = RechRowC(CLng(rng.Cells(RecordNumber, 2)))
42          WsC.Cells(i, 3) = rng.Cells(RecordNumber, 5)
43          WsC.Cells(i, 4) = rng.Cells(RecordNumber, 6)
44    End If
45       WsT.[E3] = rng.Cells(RecordNumber, 1)      'Reçu de prise en charge
46       Me.cboRech.ListIndex = CurrentRecord
End Sub

Toujours dans le module de code du usfSAV (tout en bas dans la zone des Functions rajouter cette macro :

Private Function RechRowC(k&)
Dim i&, Plg As Range
Set Plg = [BDCE].Resize([BDCE].Rows.Count, 1)
For i = 1 To [BDCE].Rows.Count
   If Plg.Cells(i, 1) = k Then
      RechRowC = i
      Exit For
   End If
Next
Set Plg = Nothing
End Function

J'ai découvert une autre petite anomalie dans la feuille Etat :

Pour y aller entrer : WsE.select dans la fenêtre d'Exécution

Sélectionner (en face de "Nom :") la cellule B4 et faire un Copier puis coller en B5 (en face de"Prénom :")

Faire de même à droite

Sélectionner (en face de "Nom :") la cellule I4 et faire un Copier puis coller en I5 (en face de"Prénom :")

Puis quitter l'Etat avec la petite maison et sauvegarder...

Si c'est trop compliqué je te fais une version 7

A+

re

tes modifs fonctionnent,

a+ jean claude

Bonsoir, et oui devoirs du soir. Vous montez le niveau d'un cran.

Pour les modifs clients qui ne sont pas pris en compte après création j'avais remarqué l'erreur mais Je ne voulais pas abusé de la gentillesse de galopin. Je comptais faire les modifs directe sur la feuille, base de données.

Bon ben j'essaye d'appliquer vos corrections et je vous tiens au courant.

A+

Bonjour tout le monde,

après 15 jours d'échanges, une cinquantaine de messages, un coup de théâtre avec l'arrivée de Ferdinand... je pense qu'il est bientôt l'heure de clôturer cette discussion.

J'ai réussi à effectuer les modifs, grâce à vos brillantes explications. Il me reste un tout petit détail que je n'ai pas réussi à appliquer :

Sélectionner (en face de "Nom :") la cellule B4 et faire un Copier puis coller en B5 (en face de"Prénom :")

Faire de même à droite

Sélectionner (en face de "Nom :") la cellule I4 et faire un Copier puis coller en I5 (en face de"Prénom :")

mais je veux y arriver sans la version 7.

A part ça, félicitations pour la coupe du monde

bonjour GMC,galopin01 et le forum,

Bravo pour la modification,

te trompe pas de feuille c'est bien dans (ETAT) que Galopin ta demander de faire les modif,

une modeste contribution pour mettre la 1ére lettre en majuscule du texte des tb6,tb7,tb9, à moins que galopin01 trouve mieux,

Après tb3_Change
'--
Private Sub tb3_Change()
   tb3 = UCase(tb3)
End Sub
'---
    Private Sub tb6_Change()
     Dim st As String
       st = tb6.Text
       tb6.Text = UCase(Mid(st, 1, 1)) & Mid$(st, 2, Len(st))
       tb6.SelStart = Len(st)
    End Sub
Private Sub tb7_Change()
     Dim st As String
       st = tb7.Text
       tb7.Text = UCase(Mid(st, 1, 1)) & Mid$(st, 2, Len(st))
       tb7.SelStart = Len(st)
    End Sub
Private Sub tb9_Change()
     Dim st As String
       st = tb9.Text
       tb9.Text = UCase(Mid(st, 1, 1)) & Mid$(st, 2, Len(st))
       tb9.SelStart = Len(st)
    End Sub

bonne continuation jean claude

Oui c'est dans la feuille Etat que ça se passe. Actuellement le prénom ne s'affiche pas donc pour l'afficher il faut faire ces modifs...

[Ferdinand]

Oui si on veux une majuscule il y a aussi StrConv, mais je ne l'utilise guère : avec les noms et les prénoms composés c'est un peu chiant. Alors moi je saisi tout en majuscule... Comme ça pas de problème !

A=

Re,

Oui effectivement, je n'étais plus sur la feuille Etat, bien vu.

J'ai incorporé vos modifs, c'est un plus, super.

Je laisse encore 2 ou 3 jours le sujet ouvert, peut être qu'un autre participant aura un truc à dire

Ce fut un réel plaisir de travailler avec vous. Merci pour votre efficacité et rapidité.

A bientôt et très bonne continuation...

Bonjour tout le monde,

J'ai un gros problème, lorsque j'effectue une modification au niveau du formulaire SAV et que j'enregistre, il me change la date de réception pour la date du jour.

C'est sûr qu'il y a une solution ?

Merci.

Re,

Autre chose, impossible de clôturer les fiches à partir du formulaire. (et donc d'afficher une date de clôture, usfSAV, tb11)

Jusqu'à présent je travaillais en différé, donc je modifiais les dates au niveau de la feuille excel.

Mais maintenant que j'essaye de travailler directement à partir du formulaire je rencontre quelque difficultés.

Merci d'avance pour votre aide les amis.

bonjour,

Aller dans VBA, afficher le usfSAV, sélectionner le tb11 (Date Cloture)

Dans la fenêtre des propriétés (en bas à gauche) basculer la propriété Enabled à True

enabledtrue

Changer tout le bloc WriteRecord :

Private Sub WriteRecord(ByVal RecordNumber As Long) ' Ecriture de l'enregistrement
Dim i&, iR&, YNewC As Boolean
 Me.cboRech.ListIndex = -1
 RecordNumber = RecordNumber + 1
    With rng
      .Cells(RecordNumber, 1).NumberFormat = "\S000000" ' Format
         If Len(.Cells(RecordNumber, 1).Value) = 0 Then ' ID
           .Cells(RecordNumber, 1) = NewNoS     'N°SAV
         End If
      .Cells(RecordNumber, 2).NumberFormat = "\C000000" ' Format
      If tb0 = "" Then
         .Cells(RecordNumber, 2) = NewNoC: YNewC = True
      Else
         .Cells(RecordNumber, 2) = CLng(Right(Me.tb0, 6)) 'N°C
      End If
      .Cells(RecordNumber, 3) = IIf(YNewC, Date, CDate(Me.tb1))         'Date réception
      .Cells(RecordNumber, 4) = UCase(Me.tb2)  'Nom
      .Cells(RecordNumber, 5) = UCase(Me.tb3)  'Prénom
      .Cells(RecordNumber, 6) = Me.tb4         'Tel
      .Cells(RecordNumber, 7) = Me.tb5         'Machine
      .Cells(RecordNumber, 8) = Me.cboType     'Type
      .Cells(RecordNumber, 9) = Me.tb6         'Description
      .Cells(RecordNumber, 10) = Me.tb7        'Autres infos
      .Cells(RecordNumber, 11) = Me.cboStat    'Statut
      .Cells(RecordNumber, 12) = Me.cboTech    'Technicien
      .Cells(RecordNumber, 13) = Me.tb9        'Suivi
      .Cells(RecordNumber, 14) = IIf(Me.tb10 <> "", Val(Me.tb10), "")     'Prix
      .Cells(RecordNumber, 15) = IIf(YDateOk, CDate(Me.tb11), Date)     'DateCloture
      i = .Cells(RecordNumber, 1)
   End With
If YNewC Then
    iR = [BDC].Rows.Count + 2
   With WsC
       .Cells(iR, 1).NumberFormat = "\C000000" ' Format
       .Cells(iR, 1) = rng.Cells(RecordNumber, 2)   'N°Client
       .Cells(iR, 2) = UCase(Me.tb2)      'Nom
       .Cells(iR, 3) = UCase(Me.tb3)      'Prénom
       .Cells(iR, 4) = Me.tb4             'Tel
       .Cells(iR, 5) = Date               'Date réception
   End With
   TriBDC
End If
   WsT.[E3] = rng.Cells(RecordNumber, 1)      'Reçu de prise en charge
   Me.cboRech.ListIndex = CurrentRecord
End Sub

Rajouter tout en bas du module usfSAV (après la Private Function NewNoS&()) la fonction suivante :

Private Function YDateOk() As Boolean
   If Len(Me.tb11) = 10 And IsDate(Me.tb11) Then
      If CDate(Me.tb11) < Date Then MsgBox "Date antérieure !"
      YDateOk = True
   End If
End Function

A+

Bonjour,

merci pour les corrections, ça marche. Simplement maintenant si je fais une modif sans insérer une date de clôture (j'insère mon diagnostic mais le client n'a pas encore récupéré sa machine) il m'indique une erreur de débogage.

Je vous envoie ça en pièce jointe.

Merci

A+

9erreur-13.docx (264.69 Ko)

Bonjour,

On va s'en tirer avec une pirouette :

Autour de cette ligne à problème tu vas rajouter une ligne avant et une ligne après...

      If Me.tb11 <> "" Then   '******************* ligne à rajouter
         .Cells(RecordNumber, 15) = IIf(YDateOk, CDate(Me.tb11), Date)     'DateCloture
      End If                  '******************* ligne à rajouter

A+

Bonjour,

Correction 5/5 merci.

++

bonjour à vous deux et le forum,

je rentre d'un périple sur le chemin de compostelle,

vous avez avancer super pas encore testé,

bonne journée jean claude

Rechercher des sujets similaires à "formulaire base donnees"