IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Excel - Formulaire de recherche et de modification


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Logistique du transport
    Inscrit en
    Mai 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Logistique du transport
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2018
    Messages : 13
    Par défaut Excel - Formulaire de recherche et de modification
    Bonjour,

    J'aimerais mettre en place un formulaire de recherche me permettant de trouver rapidement des informations de ma base de données. Pour le moment j'essaye que lorsque j'entre le numéro de PO dans ma textBOx et que je click sur rechercher, que les informations relatives au po soit afficher. Néanmoins mon code ne fonctionne pas pour le moment, pourreiz vous m'aider? Nom : Capture.PNG
Affichages : 1659
Taille : 56,6 KoNom : Capture2.PNG
Affichages : 1440
Taille : 35,8 Ko

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir
    le code c'est pas en image qu'il nous le faut

    cela dit rien qu'avec la capture
    on distingue bien la méprise sur les Object

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if trim(bd.cells(i,2)=trim(bd.text)
    dis moi un peu c'est quoi "bd" comme object ??????

    et c'est pas la seule erreur dans le peu de ligne que ta capture montre

    colle moi ton code entre balise code(bouton #)
    qu'on puisse avoir une vue d'ensemble

    une autre erreur tout du moins un e autre méprise qui va en déclencher une autre
    if textbox0="" then
    msgbpx".......
    end if

    sauf qu'après le message quand tu l'aura fermé(OK) la macro continuera et donc va chercher du vide dans ta BDD
    et de deux
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre averti
    Homme Profil pro
    Logistique du transport
    Inscrit en
    Mai 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Logistique du transport
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2018
    Messages : 13
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    [...]

    dis moi un peu c'est quoi "bd" comme object ??????[...]

    Bd est le nom de la page Base de Donnés

  4. #4
    Membre averti
    Homme Profil pro
    Logistique du transport
    Inscrit en
    Mai 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Logistique du transport
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2018
    Messages : 13
    Par défaut Fichiers
    Relance des transport ArcelorMittal.xlsm

    Je ne suis pas certains de bien faire les choses j'ai essayer de faire les modifications que vous m'avez proposées mais mon VBA à continuer de bugger. Je sais que ça doit être simple pour vous mais je ne réussit pas à faire la modification. En somme, tout ce que je veux c'est lorsque je me log sur le Userform ChercherModifier, que si j'inscrit un numéro de PO Valide les informations soit inscrite. Et que je puisse modifier la 2eme et 3 eme relance. Je ne sais pas si vous seriez en mesure de m'aider car je me considère débutant et j'ai de la difficulté a bien tout amalgamer ensemble.

    Je sais pas si vous êtes capable de m'aider car je ne réussit pas à compléter cette fonction. Néanmoins, ma fonction ajouter un nouveau po fonction à 100 % Merci d'avance pour votre aide.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Tu aurais intérêt à travailler avec des tables de données (tableaux structurés : Mon tuto sur le sujet).

    Nom : 2019-06-22_200509.png
Affichages : 1491
Taille : 31,7 Ko

    Voici un code du userform qui réalise cela, sur base d'un tableau d'exemple appelé T_BO, et d'un userform muni des textbox tboPO, tboCustomer et tboDate. Au clic sur le bouton BtnSearch, on recherche le PO grâce à Evaluate qui permet d'évaluer en VBA une formule Excel (exprimée en Excel international). Si la valeur est trouvée, on travaille avec la plage de la ligne de la table et on récupère les données pour les pousser dans les textbox. Ici, je me sers du nom des colonnes plutôt que de leur place pour faciliter la maintenance en cas d'insertion de colonnes dans la table.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Option Explicit
     
    Private Sub btnSearch_Click()
      If Not tboPO.Value = "" Then
        If SearchAndComplete(tboPO.Value) = False Then
          MsgBox "PO non trouvé"
        End If
      Else
        MsgBox "Veuillez compléter le PO"
      End If
    End Sub
     
    Function SearchAndComplete(POValue As String) As Boolean
      Dim Formula As String
      Dim RowIndex As Long
      Dim PORow As ListRow
     
      Formula = "iferror(match(""" & POValue & """,t_PO[PO],0),0)"
      RowIndex = Evaluate(Formula)
      If RowIndex > 0 Then
        Set PORow = Range("t_PO").ListObject.ListRows(RowIndex)
        tboCustomer.Value = PORow.Range(Range("t_PO").ListObject.ListColumns("Client").Index)
        tboDate.Value = Format(PORow.Range(Range("t_PO").ListObject.ListColumns("Date").Index), "dd/mm/yyyy")
        SearchAndComplete = True
      End If
    End Function

    Ici, pour l'exemple, il y a peu de colonnes, mais idéalement, on travaillerait avec un array de mappage entre les noms des colonnes et les contrôles du useform pour réaliser le transfert en une boucle plutôt qu'en x lignes.

    Voici le code du userform modifié. J'y ai déclaré une propriété publique autoimplémentée Map qui reçoit la table de mappage au chargement. Le code de la fonction de transfert a été modifié pour travailler avec une boucle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Option Explicit
     
    Public Map
     
    Private Sub btnSearch_Click()
      If Not tboPO.Value = "" Then
        If SearchAndComplete(tboPO.Value) = False Then
          MsgBox "PO non trouvé"
        End If
      Else
        MsgBox "Veuillez compléter le PO"
      End If
    End Sub
     
    Function SearchAndComplete(POValue As String) As Boolean
      Dim Formula As String
      Dim RowIndex As Long
      Dim PORow As ListRow
      Dim Counter As Long
     
      Formula = "iferror(match(""" & POValue & """,t_PO[PO],0),0)"
      RowIndex = Evaluate(Formula)
      If RowIndex > 0 Then
        Set PORow = Range("t_PO").ListObject.ListRows(RowIndex)
        For Counter = LBound(Map) To UBound(Map) Step 3
          Select Case Map(Counter + 2)
            Case "String"
              Controls(Map(Counter + 1)).Value = PORow.Range(PORow.Parent.ListColumns(Map(Counter)).Index)
            Case "Date"
              Controls(Map(Counter + 1)).Value = Format(PORow.Range(PORow.Parent.ListColumns(Map(Counter)).Index), "dd/mm/yy")
          End Select
        Next
        SearchAndComplete = True
      End If
    End Function
    Le userform est chargé et affiché grâce à une procédure d'un module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Test()
      With usrPO
        .Map = VBA.Array("Client", "tboCustomer", "String", "Date", "tboDate", "Date")
        .Show
      End With
      Unload usrPO
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. Formulaire de recherche et de modification
    Par bibi28 dans le forum Langage
    Réponses: 4
    Dernier message: 19/08/2014, 13h40
  2. [Toutes versions] Formulaire de recherche de fichier dans un dossier VBA Excel
    Par azizabdel84 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/09/2011, 22h09
  3. [PHP 5.2] modification d'un formulaire de recherche
    Par sfrsky dans le forum Langage
    Réponses: 2
    Dernier message: 17/08/2010, 01h30
  4. Exporter vers Excel a partir d'un formulaire de recherche
    Par hassan1234 dans le forum VBA Access
    Réponses: 5
    Dernier message: 15/09/2008, 16h06
  5. Probleme avec le formulaire de recherche (export excel)
    Par Legarraudien dans le forum IHM
    Réponses: 3
    Dernier message: 04/07/2008, 12h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo