Insertion vlookup dans un formulaire pr compléter un sheet excel

Résolu/Fermé
Freddyfbb - 20 févr. 2016 à 10:39
 Freddyfbb - 21 févr. 2016 à 11:51
Bonjour,

Voici une partie de mon code. Je désire utiliser une fonction vlookup à partir de l'information saisie dans "Matricule_Beneficiaire". Les informations seront récupérées dans la feuille "Titulaire_PAC" : Plage "C:J" pour compléter les colonnes allant de ActiveCell.Offset(0, 3) ... (0, 10).

With Sheets("Détails")
Sheets("Détails").Activate
ActiveCell.Value = UserForm1.Date_Jour.Value
'ActiveCell.Offset(0, 1).Value = UserForm1.Date_Jour.Value
ActiveCell.Offset(0, 2).Value = UserForm1.Matricule_Beneficiaire.Value
ActiveCell.Offset(0, 11).Value = UserForm1.Fosa_Provenance.Value
ActiveCell.Offset(0, 12).Value = UserForm1.Prestations.Value
ActiveCell.Offset(0, 13).Value = UserForm1.Actes_Medicaux.Value
ActiveCell.Offset(0, 14).Value = UserForm1.Diagnostics.Value
ActiveCell.Offset(0, 15).Value = UserForm1.Cout_Prestation.Value
ActiveCell.Offset(0, 16).Value = UserForm1.txtCDF.Value
ActiveCell.Offset(0, 17).Value = UserForm1.Fosa_Orientation.Value
ActiveCell.Offset(0, 18).Value = UserForm1.Observations.Value
End With

Merci de votre support habituel.

2 réponses

f894009
Messages postés
16508
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 mai 2022
1 635
20 févr. 2016 à 14:13
Bonjour,

au plus simple:

With Sheets("Détails")
    Sheets("Détails").Activate
    ActiveCell.Value = UserForm1.Date_Jour.Value
    'ActiveCell.Offset(0, 1).Value = UserForm1.Date_Jour.Value
    ActiveCell.Offset(0, 2).Value = UserForm1.Matricule_Beneficiaire.Value
    '-------------------------------------
    Mat_Benef = UserForm1.Matricule_Beneficiaire.Value
    ActiveCell.Offset(0, 3).Value = Application.WorksheetFunction.VLookup(Mat_Benef, Worksheets("Titulaire_PAC").Range("C:J"), 1, False)
    ActiveCell.Offset(0, 4).Value = Application.WorksheetFunction.VLookup(Mat_Benef, Worksheets("Titulaire_PAC").Range("C:J"), 2, False)
    ActiveCell.Offset(0, 5).Value = Application.WorksheetFunction.VLookup(Mat_Benef, Worksheets("Titulaire_PAC").Range("C:J"), 3, False)
    ActiveCell.Offset(0, 6).Value = Application.WorksheetFunction.VLookup(Mat_Benef, Worksheets("Titulaire_PAC").Range("C:J"), 4, False)
    ActiveCell.Offset(0, 7).Value = Application.WorksheetFunction.VLookup(Mat_Benef, Worksheets("Titulaire_PAC").Range("C:J"), 5, False)
    ActiveCell.Offset(0, 8).Value = Application.WorksheetFunction.VLookup(Mat_Benef, Worksheets("Titulaire_PAC").Range("C:J"), 6, False)
    ActiveCell.Offset(0, 9).Value = Application.WorksheetFunction.VLookup(Mat_Benef, Worksheets("Titulaire_PAC").Range("C:J"), 7, False)
    ActiveCell.Offset(0, 10).Value = Application.WorksheetFunction.VLookup(Mat_Benef, Worksheets("Titulaire_PAC").Range("C:J"), 8, False)
    '-------------------------------------
    ActiveCell.Offset(0, 11).Value = UserForm1.Fosa_Provenance.Value
    ActiveCell.Offset(0, 12).Value = UserForm1.Prestations.Value
    ActiveCell.Offset(0, 13).Value = UserForm1.Actes_Medicaux.Value
    ActiveCell.Offset(0, 14).Value = UserForm1.Diagnostics.Value
    ActiveCell.Offset(0, 15).Value = UserForm1.Cout_Prestation.Value
    ActiveCell.Offset(0, 16).Value = UserForm1.txtCDF.Value
    ActiveCell.Offset(0, 17).Value = UserForm1.Fosa_Orientation.Value
    ActiveCell.Offset(0, 18).Value = UserForm1.Observations.Value
End With
0
Merci pour le code qui marche tres bien mais si le Mat_Benef ne se trouve pas dans la feuille Titulaire_PAC, je recois un message d'erreur.

J'aimerais à ce niveau avoir un message box qui demandera au user d'arreter et d'ajouter d'abord ce benef dans la feuille Titulaire_PAC avant de continuer.

Merci encore une fois de plus de ton support.
0
f894009
Messages postés
16508
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 mai 2022
1 635 > Freddyfbb
Modifié par f894009 le 20/02/2016 à 19:08
Re,

Ben vaudrait mieux verifier que de benef existe apres la saisie dans l'UF

Mais bon.

With Sheets("Détails")
    Mat_Benef = UserForm1.Matricule_Beneficiaire.Value
    If appilaction.CountIf(Worksheets("Titulaire_PAC").Columns("C"), Mat_Benef) > 0 Then
        Sheets("Détails").Activate
        ActiveCell.Value = UserForm1.Date_Jour.Value
        'ActiveCell.Offset(0, 1).Value = UserForm1.Date_Jour.Value
        ActiveCell.Offset(0, 2).Value = UserForm1.Matricule_Beneficiaire.Value
        '-------------------------------------
        ActiveCell.Offset(0, 3).Value = Application.WorksheetFunction.VLookup(Mat_Benef, Worksheets("Titulaire_PAC").Range("C:J"), 1, False)
        ActiveCell.Offset(0, 4).Value = Application.WorksheetFunction.VLookup(Mat_Benef, Worksheets("Titulaire_PAC").Range("C:J"), 2, False)
        ActiveCell.Offset(0, 5).Value = Application.WorksheetFunction.VLookup(Mat_Benef, Worksheets("Titulaire_PAC").Range("C:J"), 3, False)
        ActiveCell.Offset(0, 6).Value = Application.WorksheetFunction.VLookup(Mat_Benef, Worksheets("Titulaire_PAC").Range("C:J"), 4, False)
        ActiveCell.Offset(0, 7).Value = Application.WorksheetFunction.VLookup(Mat_Benef, Worksheets("Titulaire_PAC").Range("C:J"), 5, False)
        ActiveCell.Offset(0, 8).Value = Application.WorksheetFunction.VLookup(Mat_Benef, Worksheets("Titulaire_PAC").Range("C:J"), 6, False)
        ActiveCell.Offset(0, 9).Value = Application.WorksheetFunction.VLookup(Mat_Benef, Worksheets("Titulaire_PAC").Range("C:J"), 7, False)
        ActiveCell.Offset(0, 10).Value = Application.WorksheetFunction.VLookup(Mat_Benef, Worksheets("Titulaire_PAC").Range("C:J"), 8, False)
    Else
        MsgBox " Ce benef n'exite pas dans la base. Veuillez le saisir."
        Exit Sub
    End If
    '-------------------------------------
    ActiveCell.Offset(0, 11).Value = UserForm1.Fosa_Provenance.Value
    ActiveCell.Offset(0, 12).Value = UserForm1.Prestations.Value
    ActiveCell.Offset(0, 13).Value = UserForm1.Actes_Medicaux.Value
    ActiveCell.Offset(0, 14).Value = UserForm1.Diagnostics.Value
    ActiveCell.Offset(0, 15).Value = UserForm1.Cout_Prestation.Value
    ActiveCell.Offset(0, 16).Value = UserForm1.txtCDF.Value
    ActiveCell.Offset(0, 17).Value = UserForm1.Fosa_Orientation.Value
    ActiveCell.Offset(0, 18).Value = UserForm1.Observations.Value
End With
0
Freddyfbb > f894009
Messages postés
16508
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 mai 2022

20 févr. 2016 à 19:42
Grand merci.
0
Vous êtes un grand support pour moi.
J'aimerais faire de même pour mon formulaire Modif_Form.

Si le user apporte une modification sur le Matricule, que la formule vlookup soit appliquée avec les memes exigences.

Les informations à compléter dans les colonnes E à L proviendront de la feuille Titulaire_PAC. La valeur à chercher est toujours Matricule_Beneficiaire.

Un message d'erreur s'affiche lorsque le nouveau matricule ne se trouve pas dans la feuille Titulaire_PAC.

Dim Modification As Integer
Modification = ID.Value
With Sheets("Détails")

For i = .Range("A" & .Rows.Count).End(xlUp).Row To 2 Step -1
If Range("A" & i).Value = Modification Then
'Range("A" & i).Value = ID.Value
Range("B" & i).Value = Date_Jour.Value
Range("D" & i).Value = Matricule_Beneficiaire.Value
Range("M" & i).Value = Fosa_Provenance.Value
Range("N" & i).Value = Prestations.Value
Range("O" & i).Value = Actes_Medicaux.Value
Range("P" & i).Value = Diagnostics.Value
Range("Q" & i).Value = Imagerie.Value
Range("R" & i).Value = Examens.Value
Range("S" & i).Value = Cout_Prestation.Value
Range("T" & i).Value = txtCDF.Value
Range("U" & i).Value = Fosa_Orientation.Value
Range("V" & i).Value = Observations.Value
Unload Modif_Form
End If
Next i
End With
0
f894009
Messages postés
16508
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 mai 2022
1 635
21 févr. 2016 à 08:43
Bonjour,
Normalement avec le code precedent, vous devriez y arriver !!!!!!
L'enregistrement que vous modifiez arrive comment dans les zones de l'UF Modid_Form
0
Freddyfbb > f894009
Messages postés
16508
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 mai 2022

21 févr. 2016 à 10:31
Les données de UF Modif proviennent de la feuille détails. Le user met le numéro de la ligne à modifier et ses infos viennent avec le UF.

Je me dis que si on apporte une Modif au niveau du Matricule, je dois faire appel à la même formule vlookup.

Merci
0
f894009
Messages postés
16508
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 mai 2022
1 635 > Freddyfbb
Modifié par f894009 le 21/02/2016 à 11:16
Re,

une Modif au niveau du Matricule si vous modifiez le Matricule, il faut vous assurer qu'il existe au moment de la saisie
0
Freddyfbb > f894009
Messages postés
16508
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 mai 2022

21 févr. 2016 à 11:51
J'ai finalement pensé à ça aussi. Pour ne pas trop compliquer les choses.

Merci
0