Microsoft 365 Problème dans mon formulaire de recherche vba

dubarre

XLDnaute Occasionnel
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.
 

Pièces jointes

  • Gestion_ARTISTES_Programmable - Copie.xlsm
    260.3 KB · Affichages: 22
Solution
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...

_Thierry

XLDnaute Barbatruc
Repose en paix
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 Occasionnel
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
Repose en paix
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
 

Pièces jointes

  • XLD_dubarre_Gestion_ARTISTES_Programmable_v00.xlsm
    234.8 KB · Affichages: 8

dubarre

XLDnaute Occasionnel
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 Occasionnel
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
Repose en paix
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 Occasionnel
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
 

dubarre

XLDnaute Occasionnel
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.
 

Pièces jointes

  • XLD_dubarre_Gestion_ARTISTES_Programmable_v00.xlsm
    242.5 KB · Affichages: 9

dubarre

XLDnaute Occasionnel
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
Repose en paix
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
Repose en paix
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
 

Discussions similaires

Statistiques des forums

Discussions
311 709
Messages
2 081 769
Membres
101 816
dernier inscrit
Jfrcs