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 :

Créer un userform5 à partir des données d'une boucle de l'userform4


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
    Ingénieur validation
    Inscrit en
    Septembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Septembre 2018
    Messages : 17
    Par défaut Créer un userform5 à partir des données d'une boucle de l'userform4
    Bonjour,

    J'ai une petite problématique. Je précise je suis débutant en vba.

    J'éxécute un code qui affiche l'UF suivant :

    Nom : 4.JPG
Affichages : 276
Taille : 63,6 Ko

    Lorsque l'on rentre le nom ET le prénom, le code va chercher si le client existe dans une base de donnée et s'il existe il doit afficher l'userform suivant prérempli avec les informations de la base de données sur ce client :

    Nom : 5.JPG
Affichages : 383
Taille : 187,2 Ko

    Mon code fonctionne jusqu'à la partie userform5 ...

    Voici mon 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
    Private Sub CommandButton1_Click()
     
    Dim FindString As String
    Dim FindString2 As String
    Dim Rng As Range
    'Dim Rng2 As Range
     
    Worksheets("Clients").Activate
    FindString = TextBox1.Value
    FindString2 = TextBox2.Value
    If Trim(FindString) <> "" And Trim(FindString2) <> "" Then
    With Worksheets("Clients").Range("A:A")
    Set Rng = .Find(FindString)
    If Not Rng Is Nothing And Rng.Offset(0, 1).Value = FindString2 Then
    'MsgBox ("OK")
     
    UserForm5.TextBox1 = Rng.Value
    UserForm5.TextBox2 = Rng.Offset(0, 1).Value
    UserForm5.TextBox3 = Rng.Offset(0, 2).Value
    UserForm5.TextBox4 = Rng.Offset(0, 3).Value
    UserForm5.TextBox5 = Rng.Offset(0, 4).Value
    UserForm5.TextBox6 = Rng.Offset(0, 5).Value
    UserForm5.TextBox7 = Rng.Offset(0, 6).Value
    UserForm5.TextBox8 = Rng.Offset(0, 7).Value
     
    Userform5.Show
     
     
    Else: MsgBox ("Le client n'existe pas, vérifier que le nom et le prénom soient correctement orthographiés")
     
    End If
    End With
    Else: MsgBox ("Veuillez entrer le nom ET le prénom")
    End If
    End Sub

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Cheepow, bonjour le forum,

    À priori je ne vois pas d'anomalie dans ton code à moins que l'Userform en question ne se nomme pas UserForm5...
    Toutefois, peut-être comme ça :

    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
    Private Sub CommandButton1_Click()
    Dim FindString As String
    Dim FindString2 As String
    Dim Rng As Range
     
    Worksheets("Clients").Activate
    FindString = TextBox1.Value
    FindString2 = TextBox2.Value
    If Trim(FindString) <> "" And Trim(FindString2) <> "" Then
        With Worksheets("Clients").Range("A:A")
            Set Rng = .Find(FindString)
        End With
        If Not Rng Is Nothing And Rng.Offset(0, 1).Value = FindString2 Then
            'MsgBox ("OK")
            With UserForm5
                .TextBox1.Value = Rng.Value
                .TextBox2.Value = Rng.Offset(0, 1).Value
                .TextBox3.Value = Rng.Offset(0, 2).Value
                .TextBox4.Value = Rng.Offset(0, 3).Value
                .TextBox5.Value = Rng.Offset(0, 4).Value
                .TextBox6.Value = Rng.Offset(0, 5).Value
                .TextBox7.Value = Rng.Offset(0, 6).Value
                .TextBox8.Value = Rng.Offset(0, 7).Value
                .Show
            End With
            Unload Me
            Exit Sub
        Else
            MsgBox ("Le client n'existe pas, vérifier que le nom et le prénom soient correctement orthographiés")
        End If
    Else
        MsgBox ("Veuillez entrer le nom ET le prénom")
    End If
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Septembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Septembre 2018
    Messages : 17
    Par défaut
    Bonjour Tautheme,

    Je ne vois pas d'anomalie non plus
    J'ai modifié le code avec ce que tu m'as signalé, j'ai toujours la même erreur, la voici :

    Nom : Capture.JPG
Affichages : 281
Taille : 134,4 Ko

    Sur l'image j'ai oublié le End with, mais je l'ai mis après avoir fais le sreen et toujours l'erreur.

  4. #4
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Re,

    Alors c'est certainement que tu as renommé la textbox de l'UserForm5 autrement que TextBox1...

    [Édition]
    Bonjour Transitoire, nos posts se sont croisés...

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Septembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Septembre 2018
    Messages : 17
    Par défaut
    Citation Envoyé par Thautheme Voir le message
    Re,

    Alors c'est certainement que tu as renommé la textbox de l'UserForm5 autrement que TextBox1...

    [Édition]
    Bonjour Transitoire, nos posts se sont croisés...
    Mon textbox1 n'existe pas, le premier textbox était textbox2 désolé !!!
    Du coup ça marche

    Merci beaucoup.

  6. #6
    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
    re
    bonjour
    ho!! que si!!! il y en a une belle d'anomalie

    imagine que
    ton findstring ="toto" et ton finstring2="titi"

    et que en colonne A tu a x fois "toto " mais que "titi" n'est pas l'offset(0,1) du premier "toto"

    et bien ta macro elle s'arrete au 1er "toto" et comme le test offset(0,1) n'est pas egale a findstring2 c'est walouh walouh !!!!

    pour info!!

    find cherche la premiere occurence
    find next recherche la suivante a operer dans une boucle jusqu'a revenir a la 1 ere occurence
    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
    Sub test0()
        FindString = "toto"
        FindString2 = "titi"
        If (FindString) <> "" And (FindString2) <> "" Then
            With Sheets(1).Range("A:A")
                Set c = .Find(FindString, LookIn:=xlValues)
                If Not c Is Nothing Then
                    firstAddress = c.Address
                    Do
                        If c.Offset(0, 1).Value = FindString2 Then
                            With UserForm5
                                .Show 0
                                .TextBox1 = c.Value
                                .TextBox2 = c.Offset(0, 1).Value
                                .TextBox3 = c.Offset(0, 2).Value
                                .TextBox4 = c.Offset(0, 3).Value
                                .TextBox5 = c.Offset(0, 4).Value
                                .TextBox6 = c.Offset(0, 5).Value
                                .TextBox7 = c.Offset(0, 6).Value
                                .TextBox8 = c.Offset(0, 7).Value
                            End With
                        End If
                        Set c = .FindNext(c)
                    Loop While Not c Is Nothing And c.Address <> firstAddress
                End If
            End With
        Else
            MsgBox "non"
        End If
    End Sub
    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

  7. #7
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonsoir, juste pour information, pour éviter les erreurs d'orthographes etc , j'ai choisi de présenter une listbox avec l'intégralité des clients nom et prénom. dessous un textbox qui a le focus, me permettant de taper par exemple "Z" et aussitôt la ListBox, modifie sa liste n'affichant plus que les clients dont le nom commence par Z (pour le cas d'une liste trop longue de clients). Puis lorsque j'ai trouvé le client, je clique dessus et les coordonnées s'affichent dans des Labels sur le coté du UF donnant les renseignements par Label.Caption.
    Enfin moi ce que j'en dit!!! Ca vous éviterais deux UF séparés.
    Cordialement

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Septembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Septembre 2018
    Messages : 17
    Par défaut
    Citation Envoyé par Transitoire Voir le message
    Bonsoir, juste pour information, pour éviter les erreurs d'orthographes etc , j'ai choisi de présenter une listbox avec l'intégralité des clients nom et prénom. dessous un textbox qui a le focus, me permettant de taper par exemple "Z" et aussitôt la ListBox, modifie sa liste n'affichant plus que les clients dont le nom commence par Z (pour le cas d'une liste trop longue de clients). Puis lorsque j'ai trouvé le client, je clique dessus et les coordonnées s'affichent dans des Labels sur le coté du UF donnant les renseignements par Label.Caption.
    Enfin moi ce que j'en dit!!! Ca vous éviterais deux UF séparés.
    Cordialement
    Bonjour Transitoire,

    Pas mal je retiens l'idée qui me parait beaucoup plus fonctionnelle

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

Discussions similaires

  1. [Débutant] Créer un graphique à partir des données d'une combobox
    Par Rockafeller dans le forum VB.NET
    Réponses: 0
    Dernier message: 20/10/2013, 01h22
  2. Dessiner des graphiques à partir des données d'une BD MySQL
    Par condor_01 dans le forum Général Java
    Réponses: 6
    Dernier message: 24/04/2008, 10h35
  3. Réponses: 2
    Dernier message: 21/03/2008, 16h41
  4. Réponses: 4
    Dernier message: 25/05/2007, 16h25
  5. comment concevoir un etat à partir des données d'une base de données
    Par lylyagloire dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 26/03/2007, 20h23

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