Macro de recherche pour bouton de commande

JCK01 Messages postés 3 Statut Membre -  
gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
J'aimerais créer une macro dans un bouton de commande "Modifier".
La macro devrait rechercher une valeur située dans la colonne F2;F200 et la mettre dans la cellule A2. La colonne E2;E200 contient la liste de références. La cellule A1 contient la référence que je recherche. Le travail correspond plus ou moins à une RECHERCHEV (A1;E2:F200;2;FAUX)

J'aimerais aussi créer un 2ème bouton nommé "Enregistrer"qui ferait l'inverse. C'est à dire copier la valeur de la cellule A2 dans la colonne F suivant la référence située en A1

Merci pour votre aide

4 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    Tu peux un peu simplifier ta première macro
    Private Sub CommandButton1_Click()
    Dim lig As Integer
    With Sheets("Travaux")
    'Volume exploité
        For lig = 2 To 7
            .Range("B" & lig * 2 + 7).Value = WorksheetFunction.VLookup(.Range("H5").Value, Range("AG3:AQ203"), lig, False)
        Next lig
    End With
    End Sub

    et pour la seconde je te propose
    Private Sub CommandButton2_Click()
    Dim lig As Integer, cel As Range
    With Sheets("Travaux")
        Set cel = .Range("AG3:AG203").Find(.Range("H5").Value)
        If Not cel Is Nothing Then
            For lig = 2 To 7
                cel.Offset(0, lig - 1) = .Range("B" & lig * 2 + 7).Value
            Next lig
        End If
    End With
    End Sub
    

    1
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    Bienvenue sur le forum.

    Le travail correspond plus ou moins à une RECHERCHEV
    Pourquoi recoder ce qui existe et fonctionne correctement ?
    0
  3. JCK01 Messages postés 3 Statut Membre
     
    Bonjour gbinforme,
    J'essai de simplifier mon programme, pour l'instant j'ai une feuille par coupe de bois. Je gère dans ces feuilles les prix de vente de bois, coûts des travaux etc. (150 feuilles c'est un peu lourd !)
    J'essaie de tout rassembler sur une feuille de travail. En sélectionnant le nom de la coupe mon tableau me donne le n° de la coupe (entre 100 et 399)
    Avec un bouton Modifier, j'aimerais recherché les valeurs stockés dans ma base et les remettre dans mon tableau.
    Une fois les valeurs modifiées, j'aimerais avec un bouton Enregistrer remettre ces valeurs dans ma base.
    0
  4. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour JCK01, hello gbinforme

    Voilà les 2 macros à mettre dans un module (ALT+F pour ouvrir l'éditeur VBA - Insertion - Module - copier et coller les macros
    Sub rechercheref()
    For n = 2 To 200
    If Range("E" & n) = Range("A1") Then Range("A2") = Range("F" & n): Exit For
    Next
    End Sub
    
    Sub enregistrerval()
    For n = 2 To 200
    If Range("E" & n) = Range("A1") Then Range("F" & n) = Range("A2"): Exit For
    Next
    End Sub

    réer ensuite les 2 boutons et insérer dans leurs codes le nom de la macro correspondante

    Cdlmnt
    Via

    "L'imagination est plus importante que le savoir."    A. Einstein
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Salut via55
      Je n'ai sans doute pas l'esprit bien clair car je ne vois toujours pas le but à atteindre car si tu trouves la valeur, pourquoi modifier car elle est toujours là ?
      0
      1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Re,

        Je n'ai pas compris non plus ! Je pense qu'il faut à certains moments rechercher la valeur correspondant à la référence et s'il il y a lieu de la modifier pouvoir le faire dans la foulée
        0
      2. JCK01 Messages postés 3 Statut Membre > via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention  
         
        Hello via55 et gbinforme,

        Tout d'abord je tiens à vous remercier pour le temps investi pour régler mon problème.

        J'ai trouvé une formule pour récupérer mes données, elle fonctionne

        Private Sub CommandButton1_Click()

        With Sheets("Travaux")
        'Volume exploité
        .Range("B11").Value = WorksheetFunction.VLookup(.Range("H5").Value, Range("AG3:AQ203"), 2, False)
        .Range("B13").Value = WorksheetFunction.VLookup(.Range("H5").Value, Range("AG3:AQ203"), 3, False)
        .Range("B15").Value = WorksheetFunction.VLookup(.Range("H5").Value, Range("AG3:AQ203"), 4, False)
        .Range("B17").Value = WorksheetFunction.VLookup(.Range("H5").Value, Range("AG3:AQ203"), 5, False)
        .Range("B19").Value = WorksheetFunction.VLookup(.Range("H5").Value, Range("AG3:AQ203"), 6, False)
        .Range("B21").Value = WorksheetFunction.VLookup(.Range("H5").Value, Range("AG3:AQ203"), 7, False)

        Maintenant il me reste à trouvé la macro pour le bouton "Enregistrer" qui doit en gros faire l'inverse. C'est à dire (pour la 1ère ligne) coller la valeur B11 dans une cellule de la colonne AH, la ligne est définie par la valeur située dans la cellule H5 la colonne est AG

        Un peu difficile pour un novice d'expliquer tous cela !
        0