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 :

Recherche et modification dans Userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 97
    Par défaut Recherche et modification dans Userform
    Bonjour à toutes et à tous,

    Grâce à l'aide précieuse de Mercatog j'ai réussi à faire une recherche dans un userform. voici le code :


    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    Private Sub BtnRecherche_Click()
    Dim c As Range
    Dim LastLig As Long, Lig As Long
    Dim sLigne As String
     
     'Appel de la procédure de déblocage.
        Call p_Debloque
     
     
        'Gestion de l'état des boutons.
        Call p_NewModif
     
     
     
     
    If Me.txtrecherche.Value <> "" Then
        With Sheets("liste")
            LastLig = .Cells(Rows.Count, "E").End(xlUp).Row
            Set c = .Range("E2:E" & LastLig).Find(Me.txtrecherche.Value, LookIn:=xlValues, lookat:=xlPart)
            If Not c Is Nothing Then
                Lig = c.Row 'dans Lig on a la ligne de la donnée trouvée
     
                libNave.Caption = "enregistrement : " & Lig - 1 & "/" & Lig
     
        Me.libCode.Caption = .Range("A" & Lig)
        Me.txtCreateur = .Range("B" & Lig)
        Me.txtDateCreation = .Range("D" & Lig)
        Me.cmbOriente = .Range("C" & Lig)
        Me.txtNom = .Range("E" & Lig)
        Me.txtPrenom = .Range("F" & Lig)
        Me.OptionFemme = .Range("G" & Lig)
        Me.OptionHomme = .Range("G" & Lig)
        Me.txtDateNaiss = .Range("H" & Lig)
        Me.txtAge = .Range("I" & Lig)
        Me.txtLieuNaiss = .Range("J" & Lig)
        Me.cmbNationalite = .Range("K" & Lig)
        Me.txtPays = .Range("L" & Lig)
        Me.txtNSS = .Range("M" & Lig)
        Me.CmbSituationFamille = .Range("N" & Lig)
        Me.txtMemo1 = .Range("O" & Lig)
        Me.txtNomRef = .Range("P" & Lig)
        Me.cmbOrganismeR = .Range("Q" & Lig)
        Me.txtPhone1 = .Range("R" & Lig)
        Me.txtNomRef2 = .Range("S" & Lig)
        Me.cmbOrganismeR2 = .Range("T" & Lig)
        Me.txtPhone2 = .Range("U" & Lig)
        Me.cmbRevenu = .Range("V" & Lig)
        Me.OptionOui = .Range("W" & Lig)
        Me.OptionNon = .Range("W" & Lig)
        Me.cmbdomiciliation = .Range("X" & Lig)
        Me.Txtmemo2 = .Range("Y" & Lig)
        Me.txtNomProt = .Range("Z" & Lig)
        Me.cmbOrganismeProt = .Range("AA" & Lig)
        Me.txtPhone3 = .Range("AB" & Lig)
        Me.Optiontutelle = .Range("AC" & Lig)
        Me.Optioncuratelle = .Range("AC" & Lig)
        Me.OptionMedoui = .Range("AD" & Lig)
        Me.OptionMednon = .Range("AD" & Lig)
        Me.txtmemo3 = .Range("AE" & Lig)
        Me.cmbOrientationMed = .Range("AE" & Lig)
        Me.CmbProvenance = .Range("AF" & Lig)
        Me.CmbsituationErrance = .Range("AH" & Lig)
        Me.Optionmoins1S = .Range("AI" & Lig)
        Me.Optionmoins1M = .Range("AI" & Lig)
        Me.Option1a6M = .Range("AI" & Lig)
        Me.Option6M1A = .Range("AI" & Lig)
        Me.Option1a2A = .Range("AI" & Lig)
        Me.Option2a5A = .Range("AI" & Lig)
        Me.Option5APlus = .Range("AI" & Lig)
        Me.OptionNSP = .Range("AI" & Lig)
        Me.TxtParcoursA = .Range("AJ" & Lig)
        Me.TxtObjectifEx = .Range("AK" & Lig)
        CmbPieceIdentite = .Range("AL" & Lig)
        Me.TxtDateExpi = .Range("AM" & Lig)
        Me.OptionNul = .Range("AN" & Lig)
        Me.OptionRegG = .Range("AN" & Lig)
        Me.Optioname = .Range("AN" & Lig)
        Me.OptionRien = .Range("AN" & Lig)
        Me.Optioncmuc = .Range("AO" & Lig)
        Me.OptionNC = .Range("AO" & Lig)
        Me.OptionAvert = .Range("AP" & Lig)
        Me.OptionExclu = .Range("AP" & Lig)
        Me.OptionFinSejour = .Range("AP" & Lig)
        Me.TxtMemo4 = .Range("AQ" & Lig)
        Me.CmbOrientation = .Range("AR" & Lig)
     
                        Set c = Nothing
            Else
                MsgBox Me.txtrecherche.Value & " non trouvé"
            End If
        End With
     
    Else
        MsgBox "renseignez le texte à chercher"
    End If
    End Sub
    Voici mon problème : si je cherche M. Delarue les infos de cette personne s'affichent normalement. Mais lorsque je fais une modif sur cette fiche, qui est le 3ème enregistrement,après validation les modif s'appliquent systématiquement à la première ligne. Je perds donc toujours ma premiere ligne d'enregistrement et la ligne qui doit être modifiée ne l'est pas.

    Pouvez-vous m'aider svp

    Merci d'avance et bonne journée

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Tu as mis le code de recherche (fonctionnel, donc inutile) et à omis mettre le code de modification (problématique, donc utile)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 97
    Par défaut Recherche et modification dans Userform
    Merci beaucoup de ta réponse.

    voici le code du bouton Modifier

    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
    Private Sub p_NewModif()
     
        'Gestion de l'état des boutons par clic sur nouveau
        'et modifier.
            BtnFirst.Enabled = False
            btnPrev.Enabled = False
            btnNext.Enabled = False
            btnLast.Enabled = False
     
            btnNouveau.Enabled = False
            btnModifier.Enabled = False
            btnValider.Enabled = True
            btnAnnuler.Enabled = True
            btnSupprimer.Enabled = False
            btnImprimer.Enabled = False
            btnFermer.Enabled = False
     
        End Sub
     
     
    Private Sub btnModifier_Click()
        'Appel de la procédure de déblocage.
        Call p_Debloque
     
        gfboModif = True
        gfboNouveau = False
     
     
        'Gestion de l'état des boutons.
        Call p_NewModif
    End Sub
    encore merci

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Primo, mets les balises codes dans tes posts (sélectionne ton code et signe # du forum).
    Secundo, tu as un problème quand tu transfère les données changées dans l'userform vers la feuille. c'est ça?
    Si j'ai bien compris, c'est ce code qu'il fallait voir.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 97
    Par défaut recherche et modification dans Userform
    excuse moi mais je n'ai pas compris "Primo, mets les balises codes dans tes posts (sélectionne ton code et signe # du forum)."

    j'ai bien un problème quand je transfère les données changées dans l'userform vers la feuille.

    Pour faire cela je pensais que le fait d'appeler la macro p_newmodif me permettait en cliquant sur btn rechercher d'effectuer la modif sur la ligne choisie (est-ce clair ?)


    pour info j'ai 8 boutons sur userform :
    Nouveau
    Modifier
    Valider
    Annuler
    Supprimer
    Imprimer
    Rechercher
    Fermer

    Merci

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Pour modifier les données, tu dois procéder comme ceci:
    1. chercher la ligne (ton code précédent)
    2. modifier les données dans ton userform
    3. envoyer les nouvelles données vers la ligne en question

    Pour cela,
    1. crée un module standard2. Efface la déclaration de Lig de ta sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub BtnRecherche_Click()
    3. Il faut créer un Sub de transfert de ce type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With Sheets("liste")
        .Range("A" & Lig) = Me.libCode.Caption
        .Range("B" & Lig) = Me.txtCreateur
        .Range("D" & Lig) = Me.txtDateCreation
        '...etx
    End With

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 97
    Par défaut Recherche et modification dans userform
    Je ne suis pas une pro en vba alors excuse mes questions.

    1) je créé un module standard public As Long (ce code je le mets où ?)
    2) quelle ligne effacer pour la déclaration de Lig ?
    3) dois-je créér une nouvelle macro pour la sub de transfert ou dois-je rajouter le code à la suite

    Voici mes modifs (je n'en suis pas fière...)

    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    Private Sub BtnRecherche_Click()
    Dim c As Range
    Dim LastLig As Long, Lig As Long
    Dim sLigne As String
     
     If Me.txtrecherche.Value <> "" Then
        With Sheets("liste")
            LastLig = .Cells(Rows.Count, "E").End(xlUp).Row
            Set c = .Range("E2:E" & LastLig).Find(Me.txtrecherche.Value, LookIn:=xlValues, lookat:=xlPart)
            If Not c Is Nothing Then
                Lig = c.Row 'dans Lig on a la ligne de la donnée trouvée
     
                libNave.Caption = "enregistrement : " & Lig - 1 & "/" & Lig
     
        .Range("A" & Lig) = Me.libCode.Caption
        .Range("B" & Lig) = Me.txtCreateur
        .Range("D" & Lig) = Me.txtDateCreation
        .Range("C" & Lig) = Me.cmbOriente
        .Range("E" & Lig) = Me.txtNom
        .Range("F" & Lig) = Me.txtPrenom
        .Range("G" & Lig) = Me.OptionFemme
        .Range("G" & Lig) = Me.OptionHomme
        .Range("H" & Lig) = Me.txtDateNaiss
        .Range("I" & Lig) = Me.txtAge
        .Range("J" & Lig) = Me.txtLieuNaiss
        .Range("K" & Lig) = Me.cmbNationalite
        .Range("L" & Lig) = Me.txtPays
        .Range("M" & Lig) = Me.txtNSS
        .Range("N" & Lig) = Me.CmbSituationFamille
        .Range("O" & Lig) = Me.txtMemo1
        .Range("P" & Lig) = Me.txtNomRef
        .Range("Q" & Lig) = Me.cmbOrganismeR
        .Range("R" & Lig) = Me.txtPhone1
        .Range("S" & Lig) = Me.txtNomRef2
        .Range("T" & Lig) = Me.cmbOrganismeR2
        .Range("U" & Lig) = Me.txtPhone2
        .Range("V" & Lig) = Me.cmbRevenu
        .Range("W" & Lig) = Me.OptionOui
        .Range("W" & Lig) = Me.OptionNon
        .Range("X" & Lig) = Me.cmbdomiciliation
        .Range("Y" & Lig) = Me.Txtmemo2
        .Range("Z" & Lig) = Me.txtNomProt
        .Range("AA" & Lig) = Me.cmbOrganismeProt
        .Range("AB" & Lig) = Me.txtPhone3
        .Range("AC" & Lig) = Me.Optiontutelle
        .Range("AC" & Lig) = Me.Optioncuratelle
        .Range("AD" & Lig) = Me.OptionMedoui
        .Range("AD" & Lig) = Me.OptionMednon
        .Range("AE" & Lig) = Me.txtmemo3
        .Range("AE" & Lig) = Me.cmbOrientationMed
        .Range("AF" & Lig) = Me.CmbProvenance
        .Range("AH" & Lig) = Me.CmbsituationErrance
        .Range("AI" & Lig) = Me.Optionmoins1S
        .Range("AI" & Lig) = Me.Optionmoins1M
        .Range("AI" & Lig) = Me.Option1a6M
        .Range("AI" & Lig) = Me.Option6M1A
        .Range("AI" & Lig) = Me.Option1a2A
        .Range("AI" & Lig) = Me.Option2a5A
        .Range("AI" & Lig) = Me.Option5APlus
        .Range("AI" & Lig) = Me.OptionNSP
        .Range("AJ" & Lig) = Me.TxtParcoursA
        .Range("AK" & Lig) = Me.TxtObjectifEx
        .Range("AL" & Lig) = Me.CmbPieceIdentite
        .Range("AM" & Lig) = Me.TxtDateExpi
        .Range("AN" & Lig) = Me.OptionNul
        .Range("AN" & Lig) = Me.OptionRegG
        .Range("AN" & Lig) = Me.Optioname
        .Range("AN" & Lig) = Me.OptionRien
        .Range("AO" & Lig) = Me.Optioncmuc
        .Range("AO" & Lig) = Me.OptionNC
        .Range("AP" & Lig) = Me.OptionAvert
        .Range("AP" & Lig) = Me.OptionExclu
        .Range("AP" & Lig) = Me.OptionFinSejour
        .Range("AQ" & Lig) = Me.TxtMemo4
        .Range("AR" & Lig) = Me.CmbOrientation
     
                        Set c = Nothing
            Else
                MsgBox Me.txtrecherche.Value & " non trouvé"
            End If
        End With
     
    Else
        MsgBox "renseignez le texte à chercher"
    End If
     
     
       With Sheets("liste")
        .Range("A" & Lig) = Me.libCode.Caption
        .Range("B" & Lig) = Me.txtCreateur
        .Range("D" & Lig) = Me.txtDateCreation
        .Range("C" & Lig) = Me.cmbOriente
        .Range("E" & Lig) = Me.txtNom
        .Range("F" & Lig) = Me.txtPrenom
        .Range("G" & Lig) = Me.OptionFemme
        .Range("G" & Lig) = Me.OptionHomme
        .Range("H" & Lig) = Me.txtDateNaiss
        .Range("I" & Lig) = Me.txtAge
        .Range("J" & Lig) = Me.txtLieuNaiss
        .Range("K" & Lig) = Me.cmbNationalite
        .Range("L" & Lig) = Me.txtPays
        .Range("M" & Lig) = Me.txtNSS
        .Range("N" & Lig) = Me.CmbSituationFamille
        .Range("O" & Lig) = Me.txtMemo1
        .Range("P" & Lig) = Me.txtNomRef
        .Range("Q" & Lig) = Me.cmbOrganismeR
        .Range("R" & Lig) = Me.txtPhone1
        .Range("S" & Lig) = Me.txtNomRef2
        .Range("T" & Lig) = Me.cmbOrganismeR2
        .Range("U" & Lig) = Me.txtPhone2
        .Range("V" & Lig) = Me.cmbRevenu
        .Range("W" & Lig) = Me.OptionOui
        .Range("W" & Lig) = Me.OptionNon
        .Range("X" & Lig) = Me.cmbdomiciliation
        .Range("Y" & Lig) = Me.Txtmemo2
        .Range("Z" & Lig) = Me.txtNomProt
        .Range("AA" & Lig) = Me.cmbOrganismeProt
        .Range("AB" & Lig) = Me.txtPhone3
        .Range("AC" & Lig) = Me.Optiontutelle
        .Range("AC" & Lig) = Me.Optioncuratelle
        .Range("AD" & Lig) = Me.OptionMedoui
        .Range("AD" & Lig) = Me.OptionMednon
        .Range("AE" & Lig) = Me.txtmemo3
        .Range("AE" & Lig) = Me.cmbOrientationMed
        .Range("AF" & Lig) = Me.CmbProvenance
        .Range("AH" & Lig) = Me.CmbsituationErrance
        .Range("AI" & Lig) = Me.Optionmoins1S
        .Range("AI" & Lig) = Me.Optionmoins1M
        .Range("AI" & Lig) = Me.Option1a6M
        .Range("AI" & Lig) = Me.Option6M1A
        .Range("AI" & Lig) = Me.Option1a2A
        .Range("AI" & Lig) = Me.Option2a5A
        .Range("AI" & Lig) = Me.Option5APlus
        .Range("AI" & Lig) = Me.OptionNSP
        .Range("AJ" & Lig) = Me.TxtParcoursA
        .Range("AK" & Lig) = Me.TxtObjectifEx
        .Range("AL" & Lig) = Me.CmbPieceIdentite
        .Range("AM" & Lig) = Me.TxtDateExpi
        .Range("AN" & Lig) = Me.OptionNul
        .Range("AN" & Lig) = Me.OptionRegG
        .Range("AN" & Lig) = Me.Optioname
        .Range("AN" & Lig) = Me.OptionRien
        .Range("AO" & Lig) = Me.Optioncmuc
        .Range("AO" & Lig) = Me.OptionNC
        .Range("AP" & Lig) = Me.OptionAvert
        .Range("AP" & Lig) = Me.OptionExclu
        .Range("AP" & Lig) = Me.OptionFinSejour
        .Range("AQ" & Lig) = Me.TxtMemo4
        .Range("AR" & Lig) = Me.CmbOrientation
     
     
    End With
    End Sub

  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Primo, pas la peine de citer les réponses qu'on te donne sauf que quand il s'agit d'un passage intéressant pour la compréhension de la suite.
    on reprends nos 3 points:
    1. dans ton éditeur vba, dans menu Insertion, Module
    Dans ce module, tu déclare ta variable Lig comme une variable publique. c'est à dire de portée générale n'importe dans quel code de ton classeur2. Ta variable Lig a été déclarée dans ton code de recherche. sa portée se limite seulement à cette procédure. à la fin d'exécution de la procédure, la variable Lig est morte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub BtnRecherche_Click()
    Dim c As Range
    Dim LastLig As Long, Lig As Long  ', Lig As Long à effacer ici
    Dim sLigne As String
     
     If Me.txtrecherch
    'etc
    Mais nous, nous avons encore besoin de la variable Lig et de sa valeur. D'où sa déclaration dans un module standard (public)
    Attention, le code de recherche doit rester comme avant (à l'exception de la suppression du bout de code suivant3. Pour transférer les données modifiées vers la feuilles, tu devra créer un bouton sur ton userform, disons BtnModifier, tu lui affecte le nouveau code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub BtnModifier_Click()
    With Sheets("liste")
        .Range("A" & Lig) = Me.libCode.Caption
        .Range("B" & Lig) = Me.txtCreateur
        .Range("D" & Lig) = Me.txtDateCreation
        '...etx
    End With
    End Sub

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 97
    Par défaut Recherche et modification dans Userform
    J'ai effectué les modifs mais lorsque dans userform je suis sur le 3ème enregistrement Albert

    Je recherche Martin (2ème ligne) clic sur Btn rechercher

    et les infos de Martin sont remplacées par celle de Albert et supprime les données sexe

    données de départ :
    colA colB ColE ColF ColG
    1 A DUFOUR Pierre Homme
    2 B MARTIN Pascale femme
    3 c ALBERT Antoine Homme
    4 D DELARUE Marie femme

    Après avoir cliqué sur rechercher :

    1 A DUFOUR Pierre Homme
    3 C ALBERT Antoine
    3 C ALBERT Antoine Homme
    4 D DELARUE Marie femme

    où est mon erreur ? merci

    voici le code :

    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    Private Sub BtnRecherche_Click()
    Dim c As Range
    Dim LastLig As Long
    Dim sLigne As String
     
     
     
     If Me.txtrecherche.Value <> "" Then
        With Sheets("liste")
            LastLig = .Cells(Rows.Count, "E").End(xlUp).Row
            Set c = .Range("E2:E" & LastLig).Find(Me.txtrecherche.Value, LookIn:=xlValues, lookat:=xlPart)
            If Not c Is Nothing Then
                Lig = c.Row 'dans Lig on a la ligne de la donnée trouvée
     
                libNave.Caption = "enregistrement : " & Lig - 1 & "/" & Lig
     
        .Range("A" & Lig) = Me.libCode.Caption
        .Range("B" & Lig) = Me.txtCreateur
        .Range("D" & Lig) = Me.txtDateCreation
        .Range("C" & Lig) = Me.cmbOriente
        .Range("E" & Lig) = Me.txtNom
        .Range("F" & Lig) = Me.txtPrenom
        .Range("G" & Lig) = Me.OptionFemme
        .Range("G" & Lig) = Me.OptionHomme
        .Range("H" & Lig) = Me.txtDateNaiss
        .Range("I" & Lig) = Me.txtAge
        .Range("J" & Lig) = Me.txtLieuNaiss
        .Range("K" & Lig) = Me.cmbNationalite
        .Range("L" & Lig) = Me.txtPays
        .Range("M" & Lig) = Me.txtNSS
        .Range("N" & Lig) = Me.CmbSituationFamille
        .Range("O" & Lig) = Me.txtMemo1
        .Range("P" & Lig) = Me.txtNomRef
        .Range("Q" & Lig) = Me.cmbOrganismeR
        .Range("R" & Lig) = Me.txtPhone1
        .Range("S" & Lig) = Me.txtNomRef2
        .Range("T" & Lig) = Me.cmbOrganismeR2
        .Range("U" & Lig) = Me.txtPhone2
        .Range("V" & Lig) = Me.cmbRevenu
        .Range("W" & Lig) = Me.OptionOui
        .Range("W" & Lig) = Me.OptionNon
        .Range("X" & Lig) = Me.cmbdomiciliation
        .Range("Y" & Lig) = Me.Txtmemo2
        .Range("Z" & Lig) = Me.txtNomProt
        .Range("AA" & Lig) = Me.cmbOrganismeProt
        .Range("AB" & Lig) = Me.txtPhone3
        .Range("AC" & Lig) = Me.Optiontutelle
        .Range("AC" & Lig) = Me.Optioncuratelle
        .Range("AD" & Lig) = Me.OptionMedoui
        .Range("AD" & Lig) = Me.OptionMednon
        .Range("AE" & Lig) = Me.txtmemo3
        .Range("AE" & Lig) = Me.cmbOrientationMed
        .Range("AF" & Lig) = Me.CmbProvenance
        .Range("AH" & Lig) = Me.CmbsituationErrance
        .Range("AI" & Lig) = Me.Optionmoins1S
        .Range("AI" & Lig) = Me.Optionmoins1M
        .Range("AI" & Lig) = Me.Option1a6M
        .Range("AI" & Lig) = Me.Option6M1A
        .Range("AI" & Lig) = Me.Option1a2A
        .Range("AI" & Lig) = Me.Option2a5A
        .Range("AI" & Lig) = Me.Option5APlus
        .Range("AI" & Lig) = Me.OptionNSP
        .Range("AJ" & Lig) = Me.TxtParcoursA
        .Range("AK" & Lig) = Me.TxtObjectifEx
        .Range("AL" & Lig) = Me.CmbPieceIdentite
        .Range("AM" & Lig) = Me.TxtDateExpi
        .Range("AN" & Lig) = Me.OptionNul
        .Range("AN" & Lig) = Me.OptionRegG
        .Range("AN" & Lig) = Me.Optioname
        .Range("AN" & Lig) = Me.OptionRien
        .Range("AO" & Lig) = Me.Optioncmuc
        .Range("AO" & Lig) = Me.OptionNC
        .Range("AP" & Lig) = Me.OptionAvert
        .Range("AP" & Lig) = Me.OptionExclu
        .Range("AP" & Lig) = Me.OptionFinSejour
        .Range("AQ" & Lig) = Me.TxtMemo4
        .Range("AR" & Lig) = Me.CmbOrientation
     
                        Set c = Nothing
            Else
                MsgBox Me.txtrecherche.Value & " non trouvé"
            End If
        End With
     
    Else
        MsgBox "renseignez le texte à chercher"
    End If
     
     
       End Sub
     
       Private Sub BtnModification_Click()
    With Sheets("liste")
        .Range("A" & Lig) = Me.libCode.Caption
        .Range("B" & Lig) = Me.txtCreateur
        .Range("D" & Lig) = Me.txtDateCreation
        .Range("C" & Lig) = Me.cmbOriente
        .Range("E" & Lig) = Me.txtNom
        .Range("F" & Lig) = Me.txtPrenom
        .Range("G" & Lig) = Me.OptionFemme
        .Range("G" & Lig) = Me.OptionHomme
        .Range("H" & Lig) = Me.txtDateNaiss
        .Range("I" & Lig) = Me.txtAge
        .Range("J" & Lig) = Me.txtLieuNaiss
        .Range("K" & Lig) = Me.cmbNationalite
        .Range("L" & Lig) = Me.txtPays
        .Range("M" & Lig) = Me.txtNSS
        .Range("N" & Lig) = Me.CmbSituationFamille
        .Range("O" & Lig) = Me.txtMemo1
        .Range("P" & Lig) = Me.txtNomRef
        .Range("Q" & Lig) = Me.cmbOrganismeR
        .Range("R" & Lig) = Me.txtPhone1
        .Range("S" & Lig) = Me.txtNomRef2
        .Range("T" & Lig) = Me.cmbOrganismeR2
        .Range("U" & Lig) = Me.txtPhone2
        .Range("V" & Lig) = Me.cmbRevenu
        .Range("W" & Lig) = Me.OptionOui
        .Range("W" & Lig) = Me.OptionNon
        .Range("X" & Lig) = Me.cmbdomiciliation
        .Range("Y" & Lig) = Me.Txtmemo2
        .Range("Z" & Lig) = Me.txtNomProt
        .Range("AA" & Lig) = Me.cmbOrganismeProt
        .Range("AB" & Lig) = Me.txtPhone3
        .Range("AC" & Lig) = Me.Optiontutelle
        .Range("AC" & Lig) = Me.Optioncuratelle
        .Range("AD" & Lig) = Me.OptionMedoui
        .Range("AD" & Lig) = Me.OptionMednon
        .Range("AE" & Lig) = Me.txtmemo3
        .Range("AE" & Lig) = Me.cmbOrientationMed
        .Range("AF" & Lig) = Me.CmbProvenance
        .Range("AH" & Lig) = Me.CmbsituationErrance
        .Range("AI" & Lig) = Me.Optionmoins1S
        .Range("AI" & Lig) = Me.Optionmoins1M
        .Range("AI" & Lig) = Me.Option1a6M
        .Range("AI" & Lig) = Me.Option6M1A
        .Range("AI" & Lig) = Me.Option1a2A
        .Range("AI" & Lig) = Me.Option2a5A
        .Range("AI" & Lig) = Me.Option5APlus
        .Range("AI" & Lig) = Me.OptionNSP
        .Range("AJ" & Lig) = Me.TxtParcoursA
        .Range("AK" & Lig) = Me.TxtObjectifEx
        .Range("AL" & Lig) = Me.CmbPieceIdentite
        .Range("AM" & Lig) = Me.TxtDateExpi
        .Range("AN" & Lig) = Me.OptionNul
        .Range("AN" & Lig) = Me.OptionRegG
        .Range("AN" & Lig) = Me.Optioname
        .Range("AN" & Lig) = Me.OptionRien
        .Range("AO" & Lig) = Me.Optioncmuc
        .Range("AO" & Lig) = Me.OptionNC
        .Range("AP" & Lig) = Me.OptionAvert
        .Range("AP" & Lig) = Me.OptionExclu
        .Range("AP" & Lig) = Me.OptionFinSejour
        .Range("AQ" & Lig) = Me.TxtMemo4
        .Range("AR" & Lig) = Me.CmbOrientation
     
     
    End With
    End Sub
    avec mes remerciements

  10. #10
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    J'arrête ici si tu ne lis pas ce qu'on te propose! Non mais un peu d'effort!
    1. Module public2. Bouton Rechercher
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    Private Sub BtnRecherche_Click()
    Dim c As Range
    Dim LastLig As Long
    Dim sLigne As String
     
    'Appel de la procédure de déblocage.
    Call p_Debloque
    'Gestion de l'état des boutons.
    Call p_NewModif
    If Me.txtrecherche.Value <> "" Then
        With Sheets("liste")
            LastLig = .Cells(Rows.Count, "E").End(xlUp).Row
            Set c = .Range("E2:E" & LastLig).Find(Me.txtrecherche.Value, LookIn:=xlValues, lookat:=xlPart)
            If Not c Is Nothing Then
                Lig = c.Row    'dans Lig on a la ligne de la donnée trouvée
                libNave.Caption = "enregistrement : " & Lig - 1 & "/" & Lig
                Me.libCode.Caption = .Range("A" & Lig)
                Me.txtCreateur = .Range("B" & Lig)
                Me.txtDateCreation = .Range("D" & Lig)
                Me.cmbOriente = .Range("C" & Lig)
                Me.txtNom = .Range("E" & Lig)
                Me.txtPrenom = .Range("F" & Lig)
                Me.OptionFemme = .Range("G" & Lig)
                Me.OptionHomme = .Range("G" & Lig)
                Me.txtDateNaiss = .Range("H" & Lig)
                Me.txtAge = .Range("I" & Lig)
                Me.txtLieuNaiss = .Range("J" & Lig)
                Me.cmbNationalite = .Range("K" & Lig)
                Me.txtPays = .Range("L" & Lig)
                Me.txtNSS = .Range("M" & Lig)
                Me.CmbSituationFamille = .Range("N" & Lig)
                Me.txtMemo1 = .Range("O" & Lig)
                Me.txtNomRef = .Range("P" & Lig)
                Me.cmbOrganismeR = .Range("Q" & Lig)
                Me.txtPhone1 = .Range("R" & Lig)
                Me.txtNomRef2 = .Range("S" & Lig)
                Me.cmbOrganismeR2 = .Range("T" & Lig)
                Me.txtPhone2 = .Range("U" & Lig)
                Me.cmbRevenu = .Range("V" & Lig)
                Me.OptionOui = .Range("W" & Lig)
                Me.OptionNon = .Range("W" & Lig)
                Me.cmbdomiciliation = .Range("X" & Lig)
                Me.Txtmemo2 = .Range("Y" & Lig)
                Me.txtNomProt = .Range("Z" & Lig)
                Me.cmbOrganismeProt = .Range("AA" & Lig)
                Me.txtPhone3 = .Range("AB" & Lig)
                Me.Optiontutelle = .Range("AC" & Lig)
                Me.Optioncuratelle = .Range("AC" & Lig)
                Me.OptionMedoui = .Range("AD" & Lig)
                Me.OptionMednon = .Range("AD" & Lig)
                Me.txtmemo3 = .Range("AE" & Lig)
                Me.cmbOrientationMed = .Range("AE" & Lig)
                Me.CmbProvenance = .Range("AF" & Lig)
                Me.CmbsituationErrance = .Range("AH" & Lig)
                Me.Optionmoins1S = .Range("AI" & Lig)
                Me.Optionmoins1M = .Range("AI" & Lig)
                Me.Option1a6M = .Range("AI" & Lig)
                Me.Option6M1A = .Range("AI" & Lig)
                Me.Option1a2A = .Range("AI" & Lig)
                Me.Option2a5A = .Range("AI" & Lig)
                Me.Option5APlus = .Range("AI" & Lig)
                Me.OptionNSP = .Range("AI" & Lig)
                Me.TxtParcoursA = .Range("AJ" & Lig)
                Me.TxtObjectifEx = .Range("AK" & Lig)
                CmbPieceIdentite = .Range("AL" & Lig)
                Me.TxtDateExpi = .Range("AM" & Lig)
                Me.OptionNul = .Range("AN" & Lig)
                Me.OptionRegG = .Range("AN" & Lig)
                Me.Optioname = .Range("AN" & Lig)
                Me.OptionRien = .Range("AN" & Lig)
                Me.Optioncmuc = .Range("AO" & Lig)
                Me.OptionNC = .Range("AO" & Lig)
                Me.OptionAvert = .Range("AP" & Lig)
                Me.OptionExclu = .Range("AP" & Lig)
                Me.OptionFinSejour = .Range("AP" & Lig)
                Me.TxtMemo4 = .Range("AQ" & Lig)
                Me.CmbOrientation = .Range("AR" & Lig)
                Set c = Nothing
            Else
                MsgBox Me.txtrecherche.Value & " non trouvé"
            End If
        End With
    Else
        MsgBox "renseignez le texte à chercher"
    End If
    End Sub
    3. Bouton Modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub BtnModifier_Click()
    With Sheets("liste")
        .Range("A" & Lig) = Me.libCode.Caption
        .Range("B" & Lig) = Me.txtCreateur
        .Range("D" & Lig) = Me.txtDateCreation
        '...etc
    End With
    End Sub

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 97
    Par défaut Recherche et modification dans Userform
    Je te prie de bien vouloir m'excuser de te faire perdre ton temps, je suis vraiment débutante en VBA et je me suis un peu mélangé les crayons...

    J'ai donc rectifié mes erreurs et cela fonctionne maintenant.

    Un grand merci pour ton aide et ta patience !

    cordialement,

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/03/2010, 21h00
  2. enregistrer modifs de données dans userform
    Par Arobase72 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 22/12/2009, 18h18
  3. Macro "Recherche une Valeur" dans un Userform
    Par Bastien06 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/09/2009, 14h43
  4. Rappel de données pour modification dans userform
    Par simonlagaffe dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 11/09/2008, 16h13
  5. [SQL] Faire une recherche plus modification dans base sql
    Par ju3979 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 09/08/2007, 17h26

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