Insertion

Résolu
Bonjour à tous,

Je galère un peu sur un travail que je dois réaliser. J'ai un tableau qui a 4 colonnes (Material (colonne A), Material description (colonne B), Date (colonne C), Num inventaire(colonne D)). J'aimerai faire une macro qui quand on saisi le Material à l'aide d'un inputbox, il le recherche dans le tableau et sélectionne la ligne du material qu'on recherchait et demande ensuite à l'utilisateur (toujours avec un inputbox) de saisir la date du jour (colonne C) et le num inventaire(colonne D). Merci

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Bonjour,

    en vba faire Alt F11 pour accéder à l'éditeur.
    Ensuite allez dans le module de la feuille concernée et mettre ce code:

    Option Explicit
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
    Dim myNum As Integer
    Dim TheDate As String
    TheDate = Application.InputBox("Entrez la Date", "Date", "16/06/2016")
    If IsDate(TheDate) Then
        TheDate = DateValue(TheDate)
    Else
        MsgBox "Date invalide"
        Exit Sub
    End If
    ActiveCell.Offset(0, 2).Value = TheDate
    myNum = Application.InputBox("Entrez le numero inventaire", "Numero inventaire", "1")
     ActiveCell.Offset(0, 3).Value = myNum
    End If
    End Sub


    Pour l'instant il faut sélectionner dans la colonne A le matériel.
    Voir si cela convient, ensuite on fera une recherche automatique avec une InputBox
    1. Contributeur
      Allez dans Developpeur, Inserer, Controle ActiveX, inserer un CommandButton;
      Double clic sur le CommandButton.
      Mettre ce code:

      Option Explicit
      Private Sub CommandButton1_Click()
      Cherche
      End Sub
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
      Dim myNum As Integer
      Dim TheDate As String
      TheDate = Application.InputBox("Entrez la Date", "Date", "16/06/2016")
      If IsDate(TheDate) Then
          TheDate = DateValue(TheDate)
      Else
          MsgBox "Date invalide"
          Exit Sub
      End If
      ActiveCell.Offset(0, 2).Value = TheDate
      myNum = Application.InputBox("Entrez le numero inventaire", "Numero inventaire", "1")
       ActiveCell.Offset(0, 3).Value = myNum
      End If
      End Sub
      Sub Cherche()
      'déclaration des variables :
      Dim Trouve As Range, PlageDeRecherche As Range
      Dim Valeur_Cherchee As String, AdresseTrouvee As String
      Dim rep As String
      rep = InputBox("Entrez le matériel", "Recherche matériel", "Mon outil")
      If rep = "" Then Exit Sub
      '********* à adapter ***********
      'affectation de valeurs aux variables :
          'on cherche le mot
      Valeur_Cherchee = rep
          'dans la première colonne de la feuille active
      Set PlageDeRecherche = ActiveSheet.Columns(1)
      '*******************************
      
      'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
      Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)
      
      'traitement de l'erreur possible : Si on ne trouve rien :
      If Trouve Is Nothing Then
          'ici, traitement pour le cas où la valeur n'est pas trouvée
          AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address
         MsgBox "Matériel introuvable"
          Exit Sub
      Else
          'ici, traitement pour le cas où la valeur est trouvée
          AdresseTrouvee = Trouve.Address
      End If
      Range(AdresseTrouvee).Select
      'vidage des variables
      Set PlageDeRecherche = Nothing
      Set Trouve = Nothing
      End Sub
      


      Voilà
      1. Merci beaucoup cs_Le Pivert. Votre code marche et fait ce que je souhaite. J'ai juste quelques petits ajustements à faire sur le code à mon niveau. Encore merci