Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Formule VLOOK dans un Userform

  • Initiateur de la discussion Initiateur de la discussion sgangbadjo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sgangbadjo

XLDnaute Nouveau
Bonsoir a tous

Please aider moi a corriger le code ci-dessous. J'essaie depuis une journee d'introduire une recherche avec VLOOK dans une formulaire. Mais j'ai un message d'erreur.

Private Sub UserForm_Click()

If Me.TextBox1 <> 0 Then

Me.TextBox2 = Application.WorksheetFunction.VLookup(Me.TextBox1.Value, Sheets("Feuil1").Range("A2:C8"), 2, False)

End If

End Sub
 
Merci @Rouge,

J'ai essayé ce code, mais même quelque soit le critère de recherche (vrai ou faux), l'exécution s'arrête.
Jai ajouté une action après Else mais l'éxécution du code s'arrete avant cette étape.

S'il y a une possibilité d'interaction, ce serait genial

Private Sub CommandButton2_Click()


Derlig = Range("A" & Rows.Count).End(xlUp).Row
mois_saisie = InputBox("Qual é o mês da apreensão?", "Alteração de dados")
code_ecole = InputBox("O que é o código da escola", "Código da escola")
critere = mois_saisie & "-" & code_ecole
On Error Resume Next
Position = Application.WorksheetFunction.Match(critere, Sheets("Ledger").Range("A1:A" & Derlig), 0)
If Position = "" Then
Exit Sub
Else
ComboBox1_mois.Value = "SUCCES"

End If

End Sub
 
Pouvez-vous déposer un extrait de votre fichier (sans données confidentielles)?
Oui @Rouge,

J'ai finalement opté pour une base de données avec deux formulaires (UserForm 1 pour entrer les données et UserForm2 pour la modification des données (Sheets ("Ledger").

Le Userform 2 doit modifier "écraser" les données après modification tandis que "Userform1" crée une nouvelle ligne dans la base.

Le Bug actuel est:
UserForm2 : Lorsque la Condition du "IF" n'est pas vérifiée, la boite de dialoge prévue a cet effet ne s'affiche pas et le formulaire bug. Mais quand la condition est vérifié, le formulaire fonctionne.

Merci pour votre aide

Je n'arrive pas a joindre le fichier en raison de sa taille. Ci-dessous, le lien pour le telecharger


Merci pour les ameliorations que vous pouvez me suggerer
 
Bonjour,

Vous avez utilisé un tableau structuré, très bien, mais pourquoi avoir désigné l'ensemble des lignes de la feuille dans ce tableau, seules les lignes occupés doivent faire partie du tableau. le tableau s'agrandira automatiquement lorsque vous ajouterez des lignes.
C'est aussi pour cela que votre fichier est énorme, alors qu'en réalité il ne pèse que 56ko.

Votre fichier avec le code corrigé.

Cdlt
 

Pièces jointes

Merci pour le resultat, c'est genial

J'ai encore du chemin à parcourir dans l'apprentissage 🙂
 
Bonjour,

Vous avez dépassé la quantité de mémoire allouée, probablement dû à une boucle infinie, mais à la suite de quelle action?
Il doit manquer dans votre code une ligne qui limite ces actions.

Dans le code de la macro en question, mettez un point d'arrêt sur une ligne (avec la touche F9)
Lancez la macro, le programme va s'arrêter au niveau du point d'arrêt, continuez avec la touche F8 (lecture du code en pas à pas), et observez ce qui se passe( promenez la souris sans cliquer au-dessus des termes qui constituent la ligne de code) vous verrez apparaître leur valeur à ce moment là et essayez d'analyser la situation.

Quelques informations utiles.
-Pour mettre ou retirer un point d'arrêt, se positionner sur une ligne et faire F9.
-Pour lire le code en pas à pas, cliquer autant de fois sur la touche F8 pour faire avancer dans la lecture du code.
-la touche F5 exécute le code en entier.

Cdlt
 
Merci beaucoup pour l'orientation
 
Bonsoir @Rouge,

J'essaie d'améliorer le code ci-dessous du formulaire 1 en ajoutant deux contraintes :
1- Avant le transfert des données, faire une vérification avec le critère (ComboBox1_mois.Value &"-"&textbox1) dans la colonne A du tableau afin de confirmer que les données n'avaient pas été précédemment saisies. Si c'est le cas, un msgbox pour informer l'utilisateur

2- Je souhaiterais dans la mesure du possible contraindre l'utilisateur a remplir toutes les cellules du formulaire 1. Idem pour le formulaire 2.

3- Savoir comment contrainte l'utilisateur a respecter un format donné pour chaque cellule du formulaire (numérique ou Texte)

Merci par avance pour l'appui


Private Sub CommandButton1_Click()

'code de transfer de donnees du forrmulaire vers le journal avec un total de 30 Textbox

Dim derligne&, i&, c&

If MsgBox("Confirma a adição de dados?", vbYesNo, "confirmation") = vbYes Then
With Sheets("Ledger")
derligne = .Cells(.Rows.Count, "B").End(xlUp).Row + 1
.Cells(derligne, 2) = ComboBox1_mois.Value
For i = 1 To 30
.Cells(derligne, i + 2) = Controls("textbox" & i)
Next
End With
End If

With Sheets("Ledger")
For c = 31 To 35
.Cells(derligne, c + 2) = Controls("ComboBox" & c)
Next
End With

Unload Me
End Sub
 

Pièces jointes

Bonjour,

Pour le formulaire 1, appliquer le même principe pour le formulaire 2:
1)- le code de CommandButton1 pour contrôler si les données sont déjà existantes et 2-) vérifier si toutes les données ont été saisies.
VB:
Private Sub CommandButton1_Click()
    'code de transfer de donnees du formulaire vers le journal avec un total de 30 Textbox
    Dim DerLigne&, i&, c&
    DerLigne = Sheets("Ledger").Range("A" & Rows.Count).End(xlUp).Row + 1
    If Application.WorksheetFunction.CountIf(Sheets("Ledger").Range("A1:A" & DerLigne), ComboBox1_mois.Value & "-" & TextBox1.Value) = 0 Then
        If MsgBox("Confirma a adição de dados?", vbYesNo, "confirmation") = vbYes Then
            With Sheets("Ledger")
                'vérifie si toutes les textbox sont remplies
                For i = 1 To 30
                    If Controls("Textbox" & i) = "" Then
                        MsgBox "Por favor preencha todos os campos antes de validar"
                        Exit Sub
                    End If
                Next i
                'vérifie si toutes les combbox sont remplies
                For i = 31 To 32
                    If Controls("Combobox" & i) = "" Then
                        MsgBox "Por favor preencha todos os campos antes de validar"
                        Exit Sub
                    End If
                Next i
                'Remplissage
                .Cells(DerLigne, 2) = ComboBox1_mois.Value
                For i = 1 To 30
                    .Cells(DerLigne, i + 2) = Controls("textbox" & i)
                Next
                For c = 31 To 35
                    .Cells(DerLigne, c + 2) = Controls("ComboBox" & c)
                Next
            End With
         End If
    Else
        MsgBox "A referência ""mês - código escolar"" já existe"
    End If
    
    Unload Me
    End Sub

3)- Savoir comment contraindre l'utilisateur à respecter un format donné pour chaque cellule du formulaire (numérique ou Texte)
A reproduire pour chaque TextBox et chaque ComboBox, exemple avec la Textbox2 et Textbox26:
Code:
Private Sub TextBox2_Change() 'Vérifie si la textbox est bien au format texte
    If IsNumeric(TextBox2.Value) Then
        MsgBox "Por favor introduza um valor em formato de texto"
        Exit Sub
    End If
End Sub

Private Sub TextBox26_Change() 'Vérifie si la textbox est bien au format numérique
    If Not IsNumeric(TextBox26.Value) Then
        MsgBox "Por favor introduza um valor numérico"
        Exit Sub
    End If
End Sub

Je n'ai pas eu le temps de tout vérifier.

Cdlt
 
Bonsoir @Rouge et Tous,

J'ai débuté l'exploitation de ma base de données et je rencontre quelques difficultés qui nécessite votre appui
1) J'ai inséré un feuille Dashboard dans le fichier de la base de données a travers Power Pivot. Mais chaque fois que j'actualise les données à travers le Bouton "refresh" ou "Refresh All", le format des données sources se réinitialise et prend le format texte. Je perds donc toutes les indicateurs définis de même que les graphiques. Je dois reprendre alors le format des colonne dans le cube après chaque actualisation des données.

2) Est il possible de faire disparaitre tous les menues de la feuille d'accueil du fichier afin de n'afficher à l'utilisateur que les boutons créés.

3) J'ai partagé le fichier à travers un dossier dans mon Cloud professionnel à une équipe de 5personnes qui sont dans différentes régions oula connexion n'est pas toujours disponible. A la phase des tests, nous avons perdu plusieurs fois des données lors des synchronisation. Est ce que vous avez une recommandation pour ce type d'usage afin de ne pas perdre des données lors de synchronisation (Quand la connexion est disponible)

Merci pour votre appui

Le fichier est disponible sur ce lien

 
Bonjour @ChTi160,

Merci beaucoup pour ton retour. La solution me semble assez intéressante. Je vais l'explorer et vous revenir en cas de difficulté.
Si vous avez des recommandations pour l'utilisation du fichier en Cloud sachant que les utilisateurs ne sont pas toujours connectés, elles seront très appréciées.
Pour l'instant, il nous arrive de perdre des données lors des synchronisations.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
687
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
371
Réponses
3
Affichages
834
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…