Insertion

Résolu
kororo1 Messages postés 7 Statut Membre -  
kororo1 Messages postés 7 Statut Membre -
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

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    0
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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à
    0
    1. kororo1 Messages postés 7 Statut Membre
       
      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
      0