VLOOKUP dans formulaire avec plusieurs feuilles

Résolu
RYA6 Messages postés 1 Date d'inscription dimanche 22 janvier 2017 Statut Membre Dernière intervention 22 janvier 2017 - Modifié par NHenry le 22/01/2017 à 18:45
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 23 janv. 2017 à 09:08
Bonjour,
Débutante en VBA c'est la 1ère fois que je m'adresse à un forum pour poser une question alors merci d'excuser les éventuelles maladresses.
Mon problème : dans la zone "ActiveCell.Offset(0, 5).Value" , je souhaiterai que ma macro cherche le nom que je saisi dans mon formulaire dans la feuille "experts". Si le nom existe, elle fait le travail. Mais si le nom n'existe pas, elle interroge alors la feuille "conditions" dans laquelle il est certain qu'elle trouve une correspondance.
Voici mon fichier :
'Procédure permettant d'ajouter un nouvel enregistrement
 Private Sub CommandButtonAjout_Click()
 Sheets("Source").Activate
 Range("A1").Select
 Selection.End(xlDown).Select 'on se positionne sur la dernière ligne non vide
 Selection.Offset(1, 0).Select 'on se décale d'une ligne vers le bas
 Selection.EntireRow.Insert 'insère une ligne
 ActiveCell = ComboBoxNom.Value
 Nom = ComboBoxNom.Value
 ActiveCell.Offset(0, 1).Value = TextBoxFactureNo 'facture N°
 ActiveCell.Offset(0, 2).Value = ComboBoxPeriode 'période
 ActiveCell.Offset(0, 3).Value = TextBoxCommentaire 'commentaire
 ActiveCell.Offset(0, 4).Value = TextBoxMontant.Value 'montant
 ActiveCell.Offset(0, 5).Value = If(NOT(ISNA(VLookup(Nom;Worksheets("Experts").Range("Baseexperts"); 5, 0)); VLookup(Nom;Worksheets("Experts").Range("Baseexperts"); 5, 0);IF(NOT(ISNA(VLookup(Nom;Worksheets("Conditions").Range("tableexpert"); 5; 0); VLookup(Nom;Worksheets("Conditions").Range("tableexpert"); 5; 0);""))
 ActiveCell.Offset(0, 6).Value = TextBoxEquiveuros 'equiv euros
 ActiveCell.Offset(0, 8).Value = Application.WorksheetFunction.VLookup(Nom, Worksheets("Conditions").Range("tableexpert"), 3, False) 'projet
 ActiveCell.Offset(0, 9).Value = Application.WorksheetFunction.VLookup(Nom, Worksheets("Conditions").Range("tableexpert"), 4, False) 'dp
 ActiveCell.Offset(0, 10).Value = Application.WorksheetFunction.VLookup(Nom, Worksheets("Experts").Range("Baseexperts"), 21, False) 'conditions
 ActiveCell.Offset(0, 11).Value = Application.WorksheetFunction.VLookup(Nom, Worksheets("Experts").Range("Baseexperts"), 24, False) 'frais
 ActiveCell.Offset(0, 12).Value = TextBoxDatefact
 ActiveCell.Offset(0, 13).Value = DateAdd("d", Cells(ActiveCell.Row, 11).Value, TextBoxDatefact.Value) 'date d'échéance
 ActiveCell.Offset(0, 14).Value = TextBoxPaiement
 ActiveCell.Offset(0, 15).Value = TextBoxSign1
 ActiveCell.Offset(0, 16).Value = TextBoxSign2
 ActiveCell.Offset(0, 17).Value = TextBoxCtaire1
 ActiveCell.Offset(0, 18).Value = TextBoxCtaire2
 ActiveCell.Offset(0, 19).Value = TextBoxCtaire
 ActiveCell.EntireRow.Select 'sélectionne la ligne de la cellule activ
 With Selection.Interior 'avec intérieur de la sélection
 .Pattern = xlNone 'aucun remplissage
 End With
 MsgBox ""
 End Sub

Par avance, merci pour votre aide.

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 21
22 janv. 2017 à 18:06
Bonjour,

1. Merci de baliser le code :



2. Pour le If regardes ici :
https://msdn.microsoft.com/fr-fr/library/office/gg251599.aspx
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 21
23 janv. 2017 à 09:08
Re,

Maintenant que tu as obtenu une réponse sur un autre Forum, passes ce post en résolu.
0
Rejoignez-nous