Insertion

Résolu
kororo1 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
kororo1 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -
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

cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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
kororo1 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
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