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 :

Problème pour modifier et enregistrer à partir de textbox [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut Problème pour modifier et enregistrer à partir de textbox
    Bonjour,

    Apparemment mon précédent message ne serait pas passé hier. Je reviens donc vers vous car dans ce projet (compilé à partir de différents codes) et malgré mes différentes recherches je n'arrive pas à résoudre les problématiques suivantes :

    - Certaines des textboxs ne se remplissent pas automatiquement en fonction des lignes sélectionnées : mot clef 1, mot clef 2,.... sans qu'il y ai de message d'erreurs.
    - Je n'arrive pas à enregistrer les modifications apportées aux différentes textboxs directement dans la listview et dans la feuille correspondante (feuil1).

    Est-ce qu'une âme charitable pourrait venir à mon aide? Je place un fichier test pour aider.

    Merci beaucoup
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Pour les mots clés qui ne se chargent pas dans la ListView, c'est simplement dû au fait que tu ne boucle pas assez loin (15 au lieu de 6) :
    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
     
    With ListView1
     
        For i = 5 To fin
     
            .ListItems.Add , , Feuil1.Cells(i, 1)
     
            For j = 2 To 15
     
                .ListItems(.ListItems.Count).ListSubItems.Add , , Feuil1.Cells(i, j)
     
            Next j
        Next i
     
    End With
    Pour la modification des enregistrements je verrai bien un truc du genre :
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    Private Sub CommandButton1_Click()
     
        Dim R As Long
        Dim Ctrl As Control
     
        R = ListView1.SelectedItem.Index + 4
     
        With Sheets("Feuil1")
     
            If TextBox2.Value = "" Then
                MsgBox "Vous avez oublié de saisir l'AUTEUR !"
                Exit Sub
            End If
     
            If TextBox1.Value = "" Then
                MsgBox "Vous avez oublié de saisir le TITRE !"
                Exit Sub
            End If
     
            If TextBox6.Value = "" Then
                MsgBox "Vous avez oublié de saisir au moins un MOT CLEF !"
                Exit Sub
            End If
     
            .Range("A" & R).Value = IIf(TextBox16.Value = "", "-", TextBox16.Value)
            .Range("D" & R).Value = IIf(TextBox1.Value = "", "-", TextBox1.Value)
            .Range("B" & R).Value = IIf(TextBox2.Value = "", "-", TextBox2.Value)
            .Range("E" & R).Value = IIf(TextBox3.Value = "", "-", TextBox3.Value)
            .Range("C" & R).Value = IIf(TextBox5.Value = "", "-", TextBox5.Value)
            .Range("F" & R).Value = IIf(TextBox6.Value = "", "-", TextBox6.Value)
            .Range("G" & R).Value = IIf(TextBox7.Value = "", "-", TextBox7.Value)
            .Range("H" & R).Value = IIf(TextBox8.Value = "", "-", TextBox8.Value)
            .Range("I" & R).Value = IIf(TextBox9.Value = "", "-", TextBox9.Value)
            .Range("J" & R).Value = IIf(TextBox10.Value = "", "-", TextBox10.Value)
            .Range("K" & R).Value = IIf(TextBox11.Value = "", "-", TextBox11.Value)
            .Range("L" & R).Value = IIf(TextBox12.Value = "", "-", TextBox12.Value)
            .Range("M" & R).Value = IIf(TextBox13.Value = "", "-", TextBox13.Value)
            .Range("N" & R).Value = IIf(TextBox14.Value = "", "-", TextBox14.Value)
            .Range("O" & R).Value = IIf(TextBox15.Value = "", "-", TextBox15.Value)
     
        End With
     
        For Each Ctrl In Me.Controls
     
            If TypeName(Ctrl) = "TextBox" Then Ctrl.Text = ""
     
        Next Ctrl
     
        TextBox1.SetFocus
     
    End Sub
    Par contre, pour ajouter des enregistrements un bouton Nouveau avec en fin de proc du bouton un re-remplissage de la ListView.
    Pour Initialiser :
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    Private Sub UserForm_Initialize()
     
        Dim fin&, I&, j&
     
        ComdValider.Visible = False
     
        With ListView1
     
            With .ColumnHeaders
     
                .Clear
                .Add , , "Numéro", 30
                .Add , , "Auteur", 80
                .Add , , "Réf", 50
                .Add , , "Titre", 180
                .Add , , "Année", 50
                .Add , , "Mot clé 1", 80
                .Add , , "Mot clé 2", 80
                .Add , , "Mot clé 3", 80
                .Add , , "Mot clé 4", 80
                .Add , , "Mot clé 5", 80
                .Add , , "Mot clé 6", 80
                .Add , , "Mot clé 7", 80
                .Add , , "Mot clé 8", 80
                .Add , , "Mot clé 9", 80
                .Add , , "Mot clé 10", 80
     
            End With
     
            fin = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
     
            For I = 5 To fin
     
                .ListItems.Add , , Feuil1.Cells(I, 1)
     
                For j = 2 To 15
     
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Feuil1.Cells(I, j)
     
                Next j
     
            Next I
     
            .View = lvwReport
            .Gridlines = True
            .AllowColumnReorder = True
            .FullRowSelect = True
     
            ListView1_ItemClick .ListItems(1) 'pour remplir les TextBox
     
        End With
     
    End Sub
    Hervé.

  3. #3
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut
    Bonjour

    Rhaaaaaaa concernant la listview .... La solution était devant mes yeux......

    Merci pour le bout de code je vais tester cela et reviens pour vous tenir au courant ! Merci encore !!!

    Par contre, pour ajouter des enregistrements un bouton Nouveau avec en fin de proc du bouton un re-remplissage de la ListView.
    Pour Initialiser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListView1_ItemClick .ListItems(1) 'pour remplir les TextBox


    Bonjour,

    Je vous remercie encore pour les codes qui fonctionnent niquels !
    Je souhaite juste avoir un éclaircissement par rapport aux modifications, est-il possible de les voir apparaître en "simultané" dans la listview car ils ne sont pris en compte que quand on ré-ouvre l'USERFORM?

    Merci beaucoup

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Je souhaite juste avoir un éclaircissement par rapport aux modifications, est-il possible de les voir apparaître en "simultané" dans la listview car ils ne sont pris en compte que quand on ré-ouvre l'USERFORM?
    Et bien, il te suffit de recharger la liste :
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    Private Sub CommandButton1_Click()
     
        Dim R As Long
        Dim Ctrl As Control
        Dim I As Long
        Dim J As Integer
     
        R = ListView1.SelectedItem.Index + 4
     
        With Sheets("Feuil1")
     
            If TextBox2.Value = "" Then
                MsgBox "Vous avez oublié de saisir l'AUTEUR !"
                Exit Sub
            End If
     
            If TextBox1.Value = "" Then
                MsgBox "Vous avez oublié de saisir le TITRE !"
                Exit Sub
            End If
     
            If TextBox6.Value = "" Then
                MsgBox "Vous avez oublié de saisir au moins un MOT CLEF !"
                Exit Sub
            End If
     
            .Range("A" & R).Value = IIf(TextBox16.Value = "", "-", TextBox16.Value)
            .Range("D" & R).Value = IIf(TextBox1.Value = "", "-", TextBox1.Value)
            .Range("B" & R).Value = IIf(TextBox2.Value = "", "-", TextBox2.Value)
            .Range("E" & R).Value = IIf(TextBox3.Value = "", "-", TextBox3.Value)
            .Range("C" & R).Value = IIf(TextBox5.Value = "", "-", TextBox5.Value)
            .Range("F" & R).Value = IIf(TextBox6.Value = "", "-", TextBox6.Value)
            .Range("G" & R).Value = IIf(TextBox7.Value = "", "-", TextBox7.Value)
            .Range("H" & R).Value = IIf(TextBox8.Value = "", "-", TextBox8.Value)
            .Range("I" & R).Value = IIf(TextBox9.Value = "", "-", TextBox9.Value)
            .Range("J" & R).Value = IIf(TextBox10.Value = "", "-", TextBox10.Value)
            .Range("K" & R).Value = IIf(TextBox11.Value = "", "-", TextBox11.Value)
            .Range("L" & R).Value = IIf(TextBox12.Value = "", "-", TextBox12.Value)
            .Range("M" & R).Value = IIf(TextBox13.Value = "", "-", TextBox13.Value)
            .Range("N" & R).Value = IIf(TextBox14.Value = "", "-", TextBox14.Value)
            .Range("O" & R).Value = IIf(TextBox15.Value = "", "-", TextBox15.Value)
     
        End With
     
        For Each Ctrl In Me.Controls
     
            If TypeName(Ctrl) = "TextBox" Then Ctrl.Text = ""
     
        Next Ctrl
     
        With ListView1
     
            .ListItems.Clear
     
            For I = 5 To Feuil1.Range("A" & Rows.Count).End(xlUp).Row
     
               .ListItems.Add , , Feuil1.Cells(I, 1)
     
               For J = 2 To 15
     
                   .ListItems(.ListItems.Count).ListSubItems.Add , , Feuil1.Cells(I, J)
     
               Next J
     
            Next I
     
        End With
     
        TextBox1.SetFocus
     
    End Sub
    Hervé.

  5. #5
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut
    bonjour,

    Merci pour cette contribution que je vais tester rapidement.

    Juste une petite question en passant : j'ai remarqué que la première ligne de ma listview restait toujours sélectionnée et ceci malgré avoir indiqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ListView1.ListItems(1).Selected = False
    Set ListView1.SelectedItem = Nothing
    Auriez-vous un éclairage?

    Merci

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 137
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Cette contribution USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire pourra peut-être t'inspirer.
    Il s'agit de ComboBox et pas de ListView mais les procédures sont suffisamment structurées pour voir comment mettre à jour ou consulter un enregistrement sélectionné dans une liste.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut
    bonjour,

    Merci pour ce lien qui va beaucoup m'aider !

    très beau travail !!

  8. #8
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Re,

    Dans la proc "Initialize" vire cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ListView1_ItemClick .ListItems(1) 'pour remplir les TextBox
    Hervé.

  9. #9
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut
    ça marche, merci !

  10. #10
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut
    Re bonjour,

    Je reviens vers vous car j'ai remarqué un petit souci dans mon projet :

    Lorsque je sélectionne un texte pour modifications, elles s'enregistrent bien sur la ligne du texte choisie dans la listview et dans la Bd, mais quand je rajoute des mots clefs et valide, la ligne modifiée se retrouve sur la ligne 1 de la listview et de la BD...



    Une idée ? (enfin si j'ai réussi à être clair...)

    .... détail qui a son importance, ce problème arrive quand on passe par la fonction recherche de la LV...
    Fichiers attachés Fichiers attachés

  11. #11
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    C'est normal car après une recherche, le nombre de lignes de la ListView ne correspond pas au nombre de lignes de ta feuille ! Il faut que tu fasse soit une recherche sur le "Numéro" pour avoir le numéro de la ligne correspondante, soit tu utilise un tableau et tu stocke le numéro de la ligne pour chaque correspondance de la recherche et quand tu sélectionne une ligne dans la ListView, elle doit correspondre au tableau qui te retourne le numéro de la ligne à modifier.

    Hervé.

  12. #12
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut
    Bonsoir

    Merci pour cette réponse. Je vais regarder comment mettre en place la solution du tableau afin de faire correspondre la ligne sélectionnée. Cela me paraît plus judicieux que le simple numéro.

    Je reviendrai sûrement vers vous !

  13. #13
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut
    Bonjour,

    Bon malgré mes recherches .. je sèche...

    Je n'arrive ni à récupérer le numéro de lignes correspondant à la sélection, après recherche, ni à trouver le coller dans un tableau...

    Un coup de main pour me mettre sur la voie, s'il vous plait?

  14. #14
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 137
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Y a-t-il des fonctionnalités du contrôle ListView qui ont guidé ton choix en lieu et place du ComboBox ?
    Ce dernier contrôle est plus simple à gérer que le premier cité surtout si on débute en VBA.

    As-tu lu le tutoriel Utiliser le contrôle ListView en VBA Excel ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  15. #15
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut
    Bonjour,

    la principale raison pour laquelle je me suis tourné vers la listview, est que je trouve son fonctionnement plus fonctionnel pour l'usage de mon fichier. En effet, je trouve plus simple et pratique de manipuler les données sous cette forme pour les différents utilisateurs du fichier, même si, je le confesse, elle n'est pas à la portée du débutant ...

    J'ai effectivement lu le tuto proposé, et ... c'est justement là que je sèche... je pencherai pour attribuer une "clé" pour faciliter le repérage de la ligne modifiée mais avant d'en arriver là, je veux comprendre l'erreur provoquée avec ma fonction recherche afin de pouvoir trouver une solution.

    Même si cela est difficile pour le débutant que je suis, je ne lâche pas !

  16. #16
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 137
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je n'ai pas lu l'entièreté des fils de cette discussion mais j'ai cru comprendre que tu n'arrivais pas à associer le numéro de l'enregistrement sur la feuille et le numéro de l'élément sélectionné.
    D'abord, il faut savoir si tous les enregistrements de la liste de données de la feuille sont présentes dans le contrôle ListView.
    Si ce n'est pas le cas, je te conseille de placer le numéro de l'enregistrement sur la feuille dans une des colonnes du ListView, de préférence la première ou la dernière, en le masquant. Dans un contrôle ComboBox, j'utilise la première colonne mais je ne me souviens plus si la première colonne du ListView est réservé car ma dernière expérience avec ce contrôle date de plus de trois ans.
    Si tous les éléments de la liste présente sur la feuille sont toute dans le ListView, cela signifie que l'élément à l'index 0 est égal à la ligne 2 sur la feuille (si tu commences ta liste en ligne 1) donc une simple rectification arithmétique suffira.
    Pour ma part, j'utilise une variable globale nommée CurrentRecord qui contient le numéro d'enregistrement et celui-ci est mis à jour lors de la sélection dans la liste et à d'autres endroit du programme lors de la création ou suppression d'un enregistrement.

    Pour une meilleure compréhension de mes propos, je te renvoie vers la contribution dont je t'ai déjà donné le lien et que je répète ici USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire
    Le code étant suffisamment structuré, tu pourrais facilement intégré le ListView en lieu et place du ComboBox que j'utilise pour l'exemple.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  17. #17
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut
    re,

    Merci pour ces éléments. Je m'y penche dès maintenant et te tiens au courant de l'avancement.

  18. #18
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Variable à mettre en tête de module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim TblRecherche() As Long
    Code pour ton bouton de recherche :
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    Private Sub CommandButton5_Click()
     
        Dim L As Long
     
        Worksheets("BD").Activate
     
        LISTE_BD = Worksheets("BD").UsedRange
     
        With ListView1
     
            .ListItems.Clear
     
            Erase TblRecherche() 'vide le tableau des résultats d'une éventuelle recherche précédente
     
            For I = 2 To UBound(LISTE_BD, 1)
     
            'On Error Resume Next 'EN CAS D'ECHEC DANS LA RECHERCHE (Il est possible que cela ne soit pa nécessaire. Je n'ai pas testé)
                 For J = 3 To UBound(LISTE_BD, 2)
     
                    If InStrRev(LISTE_BD(I, J), Me.TextBox17.Value, -1) <> 0 Then 'Recherche du mot ou d'une partie
     
                        .ListItems.Add , , LISTE_BD(I, 1)
     
                        L = L + 1
     
                        ReDim Preserve TblRecherche(1 To L)
     
                        TblRecherche(L) = I + 1 '+ 1 pour le décalage dû à "For I = 2"
     
                        For K = 2 To UBound(LISTE_BD, 2)
     
                           .ListItems(.ListItems.Count).ListSubItems.Add , , LISTE_BD(I, K)
     
                        Next K
     
                    End If
     
                 Next J
     
            Next I
     
        End With
     
    End Sub
    Et pour la récupération du numéro de ligne, dans le code de ton bouton de validation avec un gestionnaire d'erreur si tableau vide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    R = TblRecherche(ListView1.SelectedItem.Index)
    Il te faut mettre en place une gestion du tableau une fois les modifications effectuées, soit une suppression des résultats, soit tout autre chose...

    Hervé.

  19. #19
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut
    Bonjour,

    Merci pour ces éléments d'aide.

    Je regarde cela avec intérêt dès que possible et reviens vers vous au besoin. Entre les éléments de Philippe Tulliez et ceux-ci je devrai pouvoir m'en sortir !

    merci encore

  20. #20
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut
    Bonjour,

    Je n'ai malheureusement pas eu encore le temps d'approfondir tranquillement vos différentes contributions car étant au travail, mais je tenais juste à vous soumettre le contournement de la difficulté pour la modification après recherche, que j'ai trouvé :

    C'est moche mais "apparament" cela fonctionne pour la modification simple et la modification-recherche (essais effectués vite fait), je récupère le numéro de la donnée en textbox16 et j'ajoute 4 (ma feuille commence à 4). :

    Private Sub ComdValider_Click()

    Dim Ctrl As Control
    Dim I As Long
    Dim J As Integer
    Dim R As Long

    R = TextBox16 + 4
    Avec vos différentes contributions et explications, je m'agace ce week-end à modifier le code d'une manière plus conventionnelle et vous remercie encore pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Problème pour modifier des enregistrements
    Par Belti dans le forum ASP.NET MVC
    Réponses: 3
    Dernier message: 14/09/2012, 08h56
  2. Réponses: 0
    Dernier message: 11/04/2011, 09h52
  3. Problème pour modifier un enregistrement
    Par lepovre dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 19/12/2006, 17h38
  4. Problème pour modifier du texte
    Par philippef dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/09/2006, 20h30
  5. modifier un enregistrement à partir d'un sous formulaire
    Par Sebastien_INR59 dans le forum Access
    Réponses: 4
    Dernier message: 25/05/2006, 19h45

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