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 en rouge de mon fichier, 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.
RY
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 en rouge de mon fichier, 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.
RY