VLOOKUP dans formulaire avec plusieurs feuilles [Résolu]

Signaler
Messages postés
1
Date d'inscription
dimanche 22 janvier 2017
Statut
Membre
Dernière intervention
22 janvier 2017
-
Messages postés
8536
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
8 mai 2021
-
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

Messages postés
8536
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
8 mai 2021
21
Bonjour,

1. Merci de baliser le code :



2. Pour le If regardes ici :
https://msdn.microsoft.com/fr-fr/library/office/gg251599.aspx
Messages postés
8536
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
8 mai 2021
21
Re,

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