Résolu Microsoft 365 Problème dans mon formulaire de recherche vba

dubarre

XLDnaute Junior
Bonjour à tous,

Je viens vous voir car j'ai un souci dans mon classeur j'ai une base de données :

- la première colonne est agrémenté par le userform1 label8 quand je clique sur enregistrer ça alimente la base de données correctement

-dans le userform3 je recherche soit par le numéro de l'artiste soit par le nom de l'artiste quand je clique sur le bouton valider le userform2 s'ouvre et doit rentrer les données de la personne concernée.

Mon problème vient que quand le formulaire s'initialise rien ne se passe et je n'arrive pas à trouver d'où vient l'erreur j'ai monté ce classeur avec plusieurs tutoriel mais je vous avoue que là je bloque pouvez-vous m'aider s'il vous plaît.
 
Ce fil a été résolu! Aller à la solution…

Fichiers joints

_Thierry

XLDnaute Barbatruc
Bonsoir @dubarre , le Forum

Ta Variable "ID" n'est pas bien transmise entre le UserForm3 et le UserForm2 à ce qu'il me semble... Donc ensuite sans ID le UserForm2 ne s'alimente pas...

Pourtant tu l'as déclaré Public dans Module1... (bien)

En mettant un Msgbox id, je vois ceci
1593207949941.png

Au lieu de
1593208046181.png

Correction UserForm2 :

VB:
'---------------------------------------------------------------------------------------------------
'Bouton valider
'---------------------------------------------------------------------------------------------------

        If Me.OptionButton1 = False And Me.OptionButton2 = False Then
            MsgBox "Vous devez sélectionner Recherche par Numéro ou Recherche par Nom"
            Exit Sub
        End If
       
        If OptionButton1 = True Then
        id = Me.Label1.Caption

        Else
        num = Split(ListBox1.Value, "|")
        id = num(1)
       
        End If
        MsgBox id

        UserForm2.Show

id = num(1) pas 2 (c'est une array en base 0)

Ce n'est pas bien grave ;)

Bonne découverte du VBA, pas mal pour une première à base de tutos...
Bien à toi, à vous
@+Thierry
 

dubarre

XLDnaute Junior
Bonjour merci pour ton aide mais dans option1 j'aurais besoin de taper ce qui est en colonne B et en option2 en colonne D la bonne personne que je cherche

Je fais ça pour une association pour des personnes 60 ans en moyenne qui sont pas habitués à utiliser spécialement l'ordinateur et il passe par ce qui est soit dans la colonne B soit dans la colonne D et si je leur rajoute encore un numéro ils m'ont dit qu'ils aller se perdre et donc je ne peux pas me baser sur la colonne B pour créer ma base de données car l'association travaille avec une autre association et la relation entre les deux associations et la colonne B

donc là est le problème car sur une personne ils vont peut-être avoir le numéro à la création est sur une autre personne ils ne vont pas l'avoir à la création je sais c'est peut-être un peu compliqué mais vous savez que les anciens il ne faut pas les brusquer.

Je vous explique quand il crée une création fiche artiste il n'on pas tout de suite le numéro de l'artiste en colonne B donc une fois que l'autre association aura transmis il auront juste à aller dans modification pour le rajouter.

le numéro agrémenté je ne peux pas m'en servir directement il veulent passer soit par la colonne B le nouveau numéro artiste ou par le nom de l'artiste colonne D et c'est là où je bloque.
 
Dernière édition:

_Thierry

XLDnaute Barbatruc
Bonjour @dubarre , le Forum

Oui je comprends un peu mieux, J'ai un peu débroussaillé ton Userform2 de recherche pour qu'il fonctionne maintenant.

Donc voici une tentative de "réparation", entre la jonction UserForm3 vers UserForm2... Je n'ai rien touché au reste... (Tu es d'ailleurs décallé dans l'affichage des valeurs du UserForm2 maintenant que l'on peut voir la transmission de la Recherche du UserForm2...)

Je te laisse voir et essayer de comprendre ce que j'ai changé...

Bonne journée
@+Thierry
 

Fichiers joints

dubarre

XLDnaute Junior
Bonjour pouvez-vous m'expliquer ce que vous avez corrigé pour que cela fonctionne comme je le souhaite et je vais faire plusieurs tests en corrigeant les données pour qu'elles soient rentrées au bon endroit et je reviens vers vous-vous m'enlever une grande épine du pied car je dois le passer lundi pour faire les tests avec les personnes donc si vous êtes d'accord je reviendrai vers vous si j'ai un souci merci encore
 

dubarre

XLDnaute Junior
Une autre question s'il vous plaît est-il possible de XL demandé un publipostage automatique sur Word selon les besoins.

Je m'explique il y a des courriers qu'il ont besoin de taper pour l'ensemble des artistes et d'autres fois ils ont besoin d'envoyer des courriers à certaines personnes voire à une personne donc est-il possible d'automatiser par des commandes boutons qui ouvrirait Word en fonction de ce qu'ils ont besoin sur un courrier type.
 

_Thierry

XLDnaute Barbatruc
Re Bonjour,

Bonjour pouvez-vous m'expliquer ce que vous avez corrigé pour que cela fonctionne comme je le souhaite
J'ai mis des petits commentaire "Thierry" là où je suis intervenu, ce devrait être facile à détecter ;)

Et dans certains cas j'ai changé de colonnes pour tomber selon le cas sur B (2) ou sur D (4) car presque tout allait chercher sur A (1)...

Pour Automatiser Word Publipostage, ca n'a plus grande chose à voir avec ce fil de discussion, il y a pas mal de sujets qui traitent de ce besoin si tu fais des recherche dans ce Forum.

Bon courage
@+Thierry
 

dubarre

XLDnaute Junior
Désolé de te déranger est-ce que tu aurais un code pour obliger les personnes à marquer uniquement des lettres dans une textbox je ne pas à trouver un code sur Internet je sais qu'il faut le mettre dans keypress et enfin trouvé la bonne formule stp
 

patricktoulon

XLDnaute Barbatruc
bonjour
exemple
VB:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0
End Sub
adapte le nom de ton textbox !!!
 

dubarre

XLDnaute Junior
Merci beaucoup pour le codage je n'avais pas pensé à celui-là je j'ai un autre petit souci sur le formulaire modification artiste j'ai beau tourner dans tous les sens il récupère les données correctement mis concernant les dates qui se trouvent à droite du formulaire dans la combo box il me la met en version moi jour année alors que dans la base de données elle est au format français que puis-je faire s'il vous plaît.
 

Fichiers joints

dubarre

XLDnaute Junior
D'autre part sur un tutoriel j'ai trouvé cette formule pour supprimer une fiche artiste mais je ne comprends pas cela ne fonctionne afin de trouver d'où vient le problème merci d'avance de votre aide dans le formulaire de modification
VB:
Rows([a1:a1048576].Find(Label13.Caption).Row).EntireRow.Delete
 

_Thierry

XLDnaute Barbatruc
Re Bonjour @dubarre , bonjour Patrick

C'est bien Patrick t'a dépanné.

Pour les Dates, oui c'est toujours assez problématique en FR car il ne faut pas oublier que VBA est amricain, et il a la fâcheuse tendance à basculer dans son format... mm/dd/yy...

Pour la Combobox CbxBoursier en exemple je te conseille :

En chargement dans l'USF (Initialise):

Me.CbxBoursier.Value = Format(Sheets("BDD").Cells(ligne, 21).Value, "dd/mm/yyyy")

En déchargement de l'USF vers la feuille (Modifier):

Sheets("BDD").Cells(ligne, 21).Value = CDate(Me.CbxBoursier.Value)

Quand on travaille sur des Tableau Array Sequentiel , on passe même la date en Integer parfois...

Pour ton dernier post "Delete" , je n'aime pas du tout ces syntax Evaluate à la ["Captain Crochet"] on ne sait même pas de qu'elle feuille il s'agit...

Je vais regarder plus tard.

Bonne découverte du VBA !
@+Thierry
 

_Thierry

XLDnaute Barbatruc
Re Bonjour @dubarre , Patrick , le Forum

Bon je ne sais pas encore si tu es dans les temps et dans les clouts pour ta démo-présentation Lundi, mais pour ton UserForm2, Modification, bouton "Supprimer la fiche"...

Je te propose ce code :
VB:
'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
'Supprimer la fiche
'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

Private Sub CommandButton4_Click()
Dim WSBDD As Worksheet
Dim PlageNumeroArtiste As Range, CellNoArtiste As Range

Set WSBDD = ThisWorkbook.Worksheets("BDD")
Set PlageNumeroArtiste = WSBDD.Range("B2:B" & WSBDD.Range("A5000").End(xlUp).Row)

If Me.TextBox17 <> "" Then
    If MsgBox("Etes-vous sûr de définitivement supprimer " & vbCrLf & Me.TextBox2 & " " & Me.TextBox24 & " ?", vbYesNo, "Confirmation") = vbNo Then
        Exit Sub
    Else
        Set CellNoArtiste = PlageNumeroArtiste.Find(Me.TextBox17, LookIn:=xlValues)
            If Not CellNoArtiste Is Nothing Then
                WSBDD.Rows(CellNoArtiste.Row).EntireRow.Delete
                Unload Me
            Else
                MsgBox "Ancien Numero Artiste : " & Me.TextBox17 & " n'existe pas !"
            End If
    
    End If

End If
End Sub
Ce qui est tordu dans toute cette base c'est la jonglerie entre ancien numéro d'artites, ancien ID, nouvel ID... Il y a de quoi s'y perdre...

Bon courage
@+Thierry
 
Ce message a été identifié comme étant une solution!

dubarre

XLDnaute Junior
Bonjour je reviens vers vous car j'ai un petit problème dans mon classeur quand je rentre les données dans le formulaire création fiche artiste au niveau des dates je sélectionne dans ma liste déroulante boursier quand je clique sur enregistrer cela fonctionne par contre quand je mets la formule

Code:
'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
'ENREGISTREMENT DANS FEUILLE BDD
'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

Dim i As Integer, baseDD As Worksheet, dligne As Long
Set baseDD = Sheets("BDD")
dligne = Sheets("BDD").Range("A" & Rows.Count).End(xlUp).Row + 1

    baseDD.Cells(dligne, 1).Value = Me.Label8.Caption 'id
    baseDD.Cells(dligne, 2).Value = Me.TextBox17.Value 'Nouveau N°
    baseDD.Cells(dligne, 3).Value = Me.CbxCivilite.Value 'civilité
    baseDD.Cells(dligne, 4).Value = Me.TextBox2.Value 'nom
    baseDD.Cells(dligne, 5).Value = Me.TextBox22.Value 'prénom
    baseDD.Cells(dligne, 6).Value = Me.TextBox3.Value 'adresse
    baseDD.Cells(dligne, 7).Value = Me.TextBox4.Value 'adresse2
    baseDD.Cells(dligne, 8).Value = Me.TextBox5.Value 'adresse3
    baseDD.Cells(dligne, 9).Value = Me.TextBox6.Value 'adresse4
    baseDD.Cells(dligne, 10).Value = Me.TextBox7.Value 'cp
    baseDD.Cells(dligne, 11).Value = Me.TextBox23.Value 'ville
    baseDD.Cells(dligne, 12).Value = Me.TextBox24.Value 'pays res
    baseDD.Cells(dligne, 13).Value = Me.TextBox9.Value 'pays sté
    baseDD.Cells(dligne, 14).Value = Me.ComboBox1.Value 'bouche pied
    baseDD.Cells(dligne, 15).Value = Me.TextBox18.Value 'Ancien id
    baseDD.Cells(dligne, 16).Value = CDate(Me.TextBox10.Value) 'Date de naissance
    baseDD.Cells(dligne, 17).Value = Me.TextBox11.Value 'Lieu de naissance
    baseDD.Cells(dligne, 18).Value = Me.TextBox19.Value 'boursier
    baseDD.Cells(dligne, 19).Value = Me.TextBox20.Value 'membre associé
    baseDD.Cells(dligne, 20).Value = Me.TextBox21.Value 'membre
    baseDD.Cells(dligne, 21).Value = CDate(Me.CbxBoursier.Value) 'Date de boursier
    baseDD.Cells(dligne, 22).Value = CDate(Me.CbxMAssocie.Value) 'Date de membre associé
    baseDD.Cells(dligne, 23).Value = CDate(Me.CbxMembre.Value) 'date de membre
    baseDD.Cells(dligne, 24).Value = "" 'decede
    baseDD.Cells(dligne, 25).Value = "" 'Date de dece
    baseDD.Cells(dligne, 26).Value = Me.TextBox25.Value   'Tel fixe
    baseDD.Cells(dligne, 27).Value = Me.TextBox12.Value   'Tel mobile
    baseDD.Cells(dligne, 28).Value = Me.TextBox26.Value   'E-mail
    baseDD.Cells(dligne, 29).Value = Me.TextBox13.Value   'Site internet
    baseDD.Cells(dligne, 30).Value = Me.TextBox14.Value   'N Siret
    baseDD.Cells(dligne, 31).Value = Me.TextBox15.Value
    baseDD.Cells(dligne, 32).Value = Me.TextBox16.Value
    baseDD.Cells(dligne, 33).Value = Me.Label3.Caption 'Date de creation
    baseDD.Cells(dligne, 34).Value = "" 'Date de modification
    baseDD.Cells(dligne, 35).Value = Me.TextBox1.Value 'Remarque
      

Module2.tri_par_ID

'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
'EFFACEMENT DE TOUS LES CHAMPS DU FORMULAIRE
'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

    For Each Ctrl In UserForm1.Controls
        If TypeOf Ctrl Is MSForms.TextBox Or TypeOf Ctrl Is MSForms.ComboBox Then
            Ctrl.Text = ""
        End If
    Next

UserForm_Initialize

End Sub
quand je clique sur enregistrer il me met un message d'erreur aux deux lignes qui sont CDate(Me.CbxMAssocie.Value) 'Date de membre associé et CDate(Me.CbxMembre.Value) 'date de membre alors que sur les deux autres cela fonctionne et je n'arrive pas à comprendre pourquoi pouvez vous m'aider s'il vous plaît merci d'avance
 
Dernière édition:

_Thierry

XLDnaute Barbatruc
Bonjour @dubarre , le Forum

Mais désolé, je n'ai rien compris ! :cool:
Quelles lignes sont en jaune ?, quelle formule ? ...

Là c'est du charabia !

Bon courage,
@+Thierry
 

dubarre

XLDnaute Junior
J'ai corrigé je t'ai mis les lignes qui font les erreurs désolées remettent à jour la page tu verras
 

_Thierry

XLDnaute Barbatruc
Re

Je ne vois toujours pas de jaune, et quelle formule ?
par contre quand je mets la formule
@+Thierry

EDIT et c'est dans quel UserForm ???, il y en a 6 dans le vieux fichier d'exemple. Et d'ailleurs ce fichier n'est plus à jour...
 
Dernière édition:

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas