aide sur userform et une base de donnée

robich

XLDnaute Occasionnel
Bonjour à tous,

me voilà encore pour vous demander de l'aide car je suis vraiment bloqué, j'ai userform avec un ComboBox1 ou il prend les noms des personnes saisie dans la colonne (E), mais le souci elle ne prend pas à partir de la cellule (E8), mais elle prend de la première cellule, j'ai essayer de changé un peu le code mais je n'arrive pas :
Code:
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim i As Integer
   If Me.ComboBox1.ListIndex = -1 Then Exit Sub
  Ligne = Me.ComboBox1.ListIndex + 2
  For i = 1 To 78
    Me.Controls("TextBox" & i) = Ws.Cells(Ligne, i)
  Next i
End Sub

en deuxième partie je souhaite mettre une formule (DATEDIF) sur des cellules (Q8,R8,BN8,BQ8,BT8,BW8,BZ8), mon souci quand je saisie par exemple une date sur P8 dans uersform elle doit me mettre automatiquement ce que je souhaite sur la cellule Q8 une fois valider ou modifier userform

e veux joint ma base de donnéemerci encore pour votre aide
bien cordialement
 

Pièces jointes

  • Base de donnée test.xlsm
    53.2 KB · Affichages: 93
  • Base de donnée test.xlsm
    53.2 KB · Affichages: 95

Paf

XLDnaute Barbatruc
Re : aide sur userform et une base de donnée

Bonjour,

pour le problème 1:

la combobox1 n'est pas alimentée dans Private Sub ComboBox1_Change() mais dans Private Sub UserForm_Initialize() par:

Code:
...
  With Me.ComboBox1
    For J = 2 To Ws.Range("E" & Rows.Count).End(xlUp).Row
      .AddItem Ws.Range("E" & J)
    Next J
  End With
...

on commence à prendre les données en ligne 2. Pour ne commencer qu'en ligne 8, modifier le 2 en 8.
For J = 8 To Ws.Range("E" & Rows.Count).End(xlUp).Row


par ailleurs il faut également modifier dans Private Sub ComboBox1_Change() le 2 en 8
Code:
...
  Ligne = Me.ComboBox1.ListIndex + 2 ' remplacer 2 par 
...


Le point 2 est plus délicat :
la date saisie dans date de grade n'est pas encore stockée dans la feuille (colonne O), on ne peut donc pas récupérer les valeurs des cellules calculées(DATEDIF) à jour des colonnes P et Q.
Il faudrait envisager de faire les calculs dans l'USF pour l'affichage sans les enregistrer dans la feuille.

A+
 

robich

XLDnaute Occasionnel
Re : aide sur userform et une base de donnée

merci beaucoup Paf,

le problème N°1 résolut,

le problème N°2 comment je peux mettre la formule DATEDIF sur userform?
je ne suis novice au VBA peux-tu m'eclairer un peux STP

merci encore
cordialement
 

Paf

XLDnaute Barbatruc
Re : aide sur userform et une base de donnée

re,

un autre souci, Datediff (en Vba le pendant de Datedif en formule Excel) ne supporte pas les intervals "ym" et "md".

Il faudra donc rajouter une fonction de calcul équivalente à Datediff, lancée après la mise à jour de la Textbox16 (date de grade). Il faudra cliquer en dehors de cette Textbox pour déclencher le code.

Code:
Private Sub TextBox16_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 TextBox17 = Age(TextBox16, Date)
End Sub

et la fonction à copier en fin de feuille de code de l'USF:

Code:
Function Age(Date1 As Date, Date2 As Date) As String
' attribuée à  Chip Pearson's  bien que non retrouvée sur son site
' http://www.cpearson.com/excel/datedif.htm
 Dim Y As Integer
 Dim M As Integer
 Dim D As Integer
 Dim Temp1 As Date
 Temp1 = DateSerial(Year(Date2), Month(Date1), Day(Date1))
 Y = Year(Date2) - Year(Date1) + (Temp1 > Date2)
 M = Month(Date2) - Month(Date1) - (12 * (Temp1 > Date2))
 D = Day(Date2) - Day(Date1)
 If D < 0 Then
    M = M - 1
    D = Day(DateSerial(Year(Date2), Month(Date2), 0)) + D
 End If
 Age = Y & " an(s) " & M & " mois et " & D & " jour(s)"
End Function


NB : fonction non testée dans ses derniers retranchements (année bissextile ....)

Bonne suite

Edit : rajout du "copyright"
 
Dernière édition:

robich

XLDnaute Occasionnel
Re : aide sur userform et une base de donnée

MERCI Paf pour l'aide,

le première code
Code:
Private Sub TextBox16_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 TextBox17 = Age(TextBox16, Date)
End Sub
il doit ce placé ou?

cordialement
 

Paf

XLDnaute Barbatruc
Re : aide sur userform et une base de donnée

re,

dans la feuille de code de l'usf, puisqu'il s'agit d'un objet de l'usf.

Dans la feuille de code de l'usf choisir en haut à gauche textbox16 et en haut à droite exit.(voir PJ)

Entre les deux lignes qui s'affichent automatiquement:
Code:
Private Sub TextBox16_Exit(ByVal Cancel As MSForms.ReturnBoolean)

End Sub
insérer la ligne
Code:
TextBox17 = Age(TextBox16, Date)

ou bien copier directement les 3 lignes de code dans la feuille de code de l'usf.

A+
 

Pièces jointes

  • fenetre.jpg
    fenetre.jpg
    39.4 KB · Affichages: 75
  • fenetre.jpg
    fenetre.jpg
    39.4 KB · Affichages: 77

robich

XLDnaute Occasionnel
Re : aide sur userform et une base de donnée

Merci beaucoup Paf super ça marche très bien
une dernière chose s'il vous plait si vous pouvez m'aidez, j'ai deux dossier avec des feuilles PDF une qui correspond au test sportif et l'autre correspond au visite médical pour chaque personnels de cette base, c'est pour ça je souhaite ajouter deux CommandButton dans userform la partie "Aptitude CCPM, c'est deux CommandButton font appel à ces feuilles qui correspond au noms choisi dans l'userform!!

je ne sais pas si c'est possible ou non, mais si vous avez une aidée je suis preneur

merci encore pour ton temps consacré pour moi et ton aide précieuse

bien cordialement
 

Paf

XLDnaute Barbatruc
Re : aide sur userform et une base de donnée

re,

si j'ai compris, il s'agit d'ouvrir des fichiers pdf depuis un bouton de l'USF.

Si on trouve de multiples solutions sur ce site ou autres, aucune ne fonctionne chez moi :confused:

désolé,

Bonne suite
 

robich

XLDnaute Occasionnel
Re : aide sur userform et une base de donnée

bonjour Paf,

j'avais cette solution qui étais proposé mais je ne sais pas comment elle marche??


Créer une UserForm, dans cette UserForm placer le code suivant
Code :
Code:
Option Explicit
 
Private Sub UserForm_Initialize()
    With UserForm1
        .Height = 600
        .Width = 600
    End With
End Sub
Dans un module Standard placer le code suivant
puis affecter un bouton créé sur la feuille à la procédure SelFichierPDF ( à adapter à ton contexte )

Code :

Code:
Option Explicit
 
Private Sub LoadPDF(ByVal sNomFichier As String, iNumPage As Long)
Dim oPDF As Object
 
    Set oPDF = UserForm1.Controls.Add("AcroPDF.PDF.1", "DisplayPDF")
 
    With UserForm1.Controls("DisplayPDF")
        .Height = UserForm1.Height - 20
        .Width = UserForm1.Width - 5
        .Visible = True
    End With
 
    With oPDF
        '   Nom fichier
        .src = sNomFichier
        .setShowScrollbars True
        '   Barre d'outils
        .SetShowToolbar True
        '   none bookmarks thumbs
        .setPageMode "bookmarks"
        '   DontCare SinglePage OneColumn TwoColumnLeft TwoColumnRight
        .setLayoutMode "SinglePage"
        '  page affichée
        .setCurrentPage iNumPage
        '   Fit FitH FitV FitB FitBH FitB
        .setView "Fit"
        '   Zoom
        .setZoom 58
    End With
 
    UserForm1.Show
    Set oPDF = Nothing
End Sub
 
Sub SelFichierPDF()
Dim Fichier As Variant
    ChDir ThisWorkbook.Path
    Fichier = Application.GetOpenFilename("Fichiers PDF (*.pdf), *.pdf")
    If Fichier = False Then Exit Sub
    DoEvents
    LoadPDF Fichier, 1
End Sub
 

robich

XLDnaute Occasionnel
Re : aide sur userform et une base de donnée

code :

Dim nom As String
nom = "tartempion"
'ou bien récupérer le nom dans un contrôle de l'usf
nom = combobox1.Value
ThisWorkbook.FollowHyperlink "C:\Document\pdf\" & nom & ".pdf"
 

Paf

XLDnaute Barbatruc
Re : aide sur userform et une base de donnée

re,

Pour ce problème de Pdf ( pour lequel je ne peux vous aider), je pense qu'il serait préférable d'ouvrir une nouvelle discussion (que je suivrais pour voir où ça 'coince' chez moi)

Bonne suite
 

Bebere

XLDnaute Barbatruc
Re : aide sur userform et une base de donnée

bonjour Robic,Paf
le code pour pdf ne fonctionne pas ,plantage
fait des changements dans le code
tu fais des choses inutiles pour commencer
apprend a bien gérer les entrées et après tu pourras jouer à cache cache
 

Pièces jointes

  • Base de donnée test.xlsm
    51.9 KB · Affichages: 79
  • Base de donnée test.xlsm
    51.9 KB · Affichages: 80

robich

XLDnaute Occasionnel
Re : aide sur userform et une base de donnée

bonjour Bebere, Paf
Merci encore bebere,

j'ai ajouter deux colonnes de liens hypertextes sur la base, avec ça je peux accéder avec mes deux commandbutton dans useform au PDF au nom de personne que je veux, j'ai trouver ça plus simple que de chercher les PDF directement, je n'essaye pas de faire cachcach c'est juste avec le temps je découvre dés choses mieux que j'avais mis en place pour gagné plus de temps et me facilité la tache.

je voulais encore faire quelque amélioration si vous pouvez m'aidez, j'ai mis dans mon module une formule DATDIF pour alimenter quelque textbox automatiquement seulement une fois je saisie une date sur une autre textbox, celle-ci elle s'active à chaque insertion d'un nouveau personnes en click sur le commandbutton (insérer nouveau), je souhaite ajouter cette opération en cick sur le commandbutton (modifier) afin d'ajouter par exemple date d'un nouveau né?? je ne sais pas si c'est possible ou non!!

je souhaite en plus changé les textbox (Aptitude et les restrictions) dans l'anglet Aptitude CCPM par des ComboBox, sur feuille (LISTE) j'ai ajouter de quoi alimenter les combobox.

pouvez-vous m'aidez à améliorer mon projet

merci encore pour votre aide
 

Pièces jointes

  • Base de donnée test.xlsm
    57.5 KB · Affichages: 74
  • Base de donnée test.xlsm
    57.5 KB · Affichages: 86

Discussions similaires

Réponses
6
Affichages
384

Statistiques des forums

Discussions
311 720
Messages
2 081 907
Membres
101 836
dernier inscrit
karmon