Problème userform

Bonjour

ma macro fonctionnait bien jusqu'à ce matin mais je ne sais pas pourquoi cela bug d'un coup.

Quand dans l’onglet « Accueil », je clique sur Rechercher, je voudrais que la recherche du userform (Recherche) se fasse dans la feuille BDD et non dans la feuille Accueil.

Quand je mets dans userform init l’ordre sheets(« BDD »).Select ça me met un message d’erreur.

Merci d’avance pour votre aide.

11test.xlsm (48.03 Ko)

Bonjour,

En VBA, on n'utilise pas Select ou Activate Il fait faire comme tuas fait dans le UserForm "Création":

With Worksheets("BDD")
'...

ou à la limite comme tu as fais quelques lignes plus bas :

Feuil2.Cells...

Mébon l'ensemble est vraiment bien pauvre et difficile à corriger : Il faudrait mieux tout refaire dans un UserForm unique.

A+

Salut Cycy,
Salut Galopin,

étant sur le sujet, j'interviens pour, évidemment, confirmer les commentaires de Galopin.
Le sujet est vaste et même si il n'y a rien de compliqué, l'usage d'une USF demande, come le reste de la programmation, beaucoup de rigueur mais aussi de recherche de la simplicité.
- ne jamais hésiter à spécifier la source de tes données, surtout lorsqu'il y a plusieurs feuilles, histoire que VBA sache, sans hésitation, où aller pêcher ses infos ;

    With Worksheets("BDD")
        ' Boucle de la ligne 2 à la dernière ligne dans la colonne nomCol
        For lig = 3 To .Range(nomCol & Rows.Count).End(xlUp).Row
            LCombo.AddItem .Range(nomCol & lig).Value
        Next lig
    End With

- tes infos commencent à la ligne 3 et non 2 ;
- les noms de contrôle (TextBox et autres) : chercher à donner des noms identiques avec des n° d'index correspondants aux colonnes de données. Tu peux alors "goupiller" des boucles plutôt que chercher tes données ligne par ligne.
Ex: txt1, txt2, cmb1, cmb2
Ce qui donnerait pour l'affichage des données des colonnes [A:AI]
Ah, évidemment, il faut pouvoir jouer de ses connaissances mathématiques pour chercher le chemin le plus direct !
Je pense que MOD(ulo) est à la portée de tout le monde !

With Worksheets("BDD")
    For x = 1 To 29 Step 7    'pour les données en colonnes [A-AI]
        If x Mod 7 = 1 Or x Mod 7 = 6 Then
            Me.Controls("cmb" & x).Text = .Cells(lig, x)
        Else
            Me.Controls("txt" & x).Text = .Cells(lig, x)
        End If
    Next
End With

Un peu de boulot de réflexion avant de construire tes USF et, comme le dit Galopin, inutile de faire 2 USF identiques ! Comme pour le reste, il faut trouver le moyen d'indiquer à VBA (bouton, checkbox...) que tu es en mode "Création" ou "Afffichage".

...
"Service non disponible..." : je mettrai le fichier plus tard...

11cycy.xlsm (40.91 Ko)

EDIT : voilà le fichier. Je n'y règle que l'affichage dans l'USF "Recherche".


A+

bonjour

merci pour vos réponses

je débute en vba

j'ai essayé de boucler mais ça ne fonctionne pas

dois-je mettre le code dans userform_initialize?

Salut Cycy,

c'est un exemple de code avec des contrôles renommés judicieusement.
Si cela n'est pas fait en amont, le code fourni ne fonctionnera jamais... forcément...


A+

Rechercher des sujets similaires à "probleme userform"