Je rencontre une difficult=E9 sur la s=E9lection d'un ligne =E0 partir d'un
listebox dans un userform et m'en explique.
J'ai un userform permettant de selectionner une fiche de ma feuille
GDP. Ce Userform est dot=E9 de combobox permettant l'utilisation de
filtre (5 filtres et l'utilisation de ces derniers ne semblent pas
=EAtre la cause de mon probl=E8me).
Si je selectionne 1 ligne parmis plusieurs lignes dans la listbox
(avec ou sans utilisation de filtre), par double clique, il referme
bien mon userform de selection et ouvre un second Userform permettant
de visualiser la fiche s=E9lection. Par contre, si je n'ai qu'une seule
ligne dans mon listbox de selection, cela plante, et j'ai le message
suivant :
Erreur d'Excution '6' :
D=E9passement de capacit=E9.
Mes lignes de commandes sont les suivantes :
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim A As Integer
Dim Ligne As Integer
With Me.ListBox1
For A =3D 0 To .ListCount - 1
If .Selected(A) =3D True Then
Ligne =3D Evaluate("=3DMATCH(""" & .List(A, 0) & .List(A, 4) &
""",NOM&IDENTIFIANT,0)")
Sheets("GDP").Range("A" & Ligne).Select
End If
Next
End With
Unload SelectModif
Dim i As Integer
i =3D ActiveCell.Row
Cells(i, 1).Select
ModifPerso.Show
End Sub
'NOM correspond =E0 la plage ou se trouve les NOM sur ma feuille et
IDENTIFIANT correspond =E9galement =E0 la plage ou 'se trouve les
IDENTIFIANT (Insertion/Nom/D=E9finir)
Quelqu'un aurait il la solution =E0 mon probl=E8me ?
Merci par avance de votre aide.
Bien cordialement.
Alex
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichD
Bonjour,
Sans rien voir, il est un peu difficile de voir ce qui ne va pas.
Place un point d'arrêt dans la marge du code du formulaire sur la ligne débutant par : With Me.ListBox1 et exécute le code pas à pas en utilisant la touche F8. Tu vas identifier la ligne de code problème!
Sans rien voir, il est un peu difficile de voir ce qui ne va pas.
Place un point d'arrêt dans la marge du code du formulaire
sur la ligne débutant par : With Me.ListBox1
et exécute le code pas à pas en utilisant la touche F8. Tu vas
identifier la ligne de code problème!
Sans rien voir, il est un peu difficile de voir ce qui ne va pas.
Place un point d'arrêt dans la marge du code du formulaire sur la ligne débutant par : With Me.ListBox1 et exécute le code pas à pas en utilisant la touche F8. Tu vas identifier la ligne de code problème!
Sans rien voir, il est un peu difficile de voir...
Ce qui traduit clairement la difficulté que le ou les répondeur(s) éprouve(nt) pour comprendre la question. Le "un peu" laisse cependant une place à la boule de cristal que manie à la perfection notre MVP d'Outre-Mare.
-))))
Jacquouille
" Le vin est au repas ce que le parfum est à la femme." "MichD" a écrit dans le message de groupe de discussion : kk6o9b$49e$
Bonjour,
Place un point d'arrêt dans la marge du code du formulaire sur la ligne débutant par : With Me.ListBox1 et exécute le code pas à pas en utilisant la touche F8. Tu vas identifier la ligne de code problème!
Sans rien voir, il est un peu difficile de voir...
Ce qui traduit clairement la difficulté que le ou les répondeur(s)
éprouve(nt) pour comprendre la question.
Le "un peu" laisse cependant une place à la boule de cristal que manie à la
perfection notre MVP d'Outre-Mare.
-))))
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
kk6o9b$49e$1@speranza.aioe.org...
Bonjour,
Place un point d'arrêt dans la marge du code du formulaire
sur la ligne débutant par : With Me.ListBox1
et exécute le code pas à pas en utilisant la touche F8. Tu vas
identifier la ligne de code problème!
Sans rien voir, il est un peu difficile de voir...
Ce qui traduit clairement la difficulté que le ou les répondeur(s) éprouve(nt) pour comprendre la question. Le "un peu" laisse cependant une place à la boule de cristal que manie à la perfection notre MVP d'Outre-Mare.
-))))
Jacquouille
" Le vin est au repas ce que le parfum est à la femme." "MichD" a écrit dans le message de groupe de discussion : kk6o9b$49e$
Bonjour,
Place un point d'arrêt dans la marge du code du formulaire sur la ligne débutant par : With Me.ListBox1 et exécute le code pas à pas en utilisant la touche F8. Tu vas identifier la ligne de code problème!
Excusez moi de ne pas avoir assez develloppé ma réponse, pour pallier à cela j'ai mis une copie avec le module ou je rencontre le probleme sur Cjoint : http://cjoint.com/?0Dmq1297fYs Il s'agit de données fictives. Pour rappel, si la listbox contient plusieurs lignes cela fonctionne, par c ntre si celui ci n'a qu'une ligne cela ne fonctionne plus. Merci encore pour votre aide. Bien cordialement. Alex
Re bonjour,
Excusez moi de ne pas avoir assez develloppé ma réponse, pour pallier à cela j'ai mis une copie avec le module ou je rencontre le probleme sur Cjoint :
http://cjoint.com/?0Dmq1297fYs
Il s'agit de données fictives.
Pour rappel, si la listbox contient plusieurs lignes cela fonctionne, par c ntre si celui ci n'a qu'une ligne cela ne fonctionne plus.
Merci encore pour votre aide.
Bien cordialement.
Alex
Excusez moi de ne pas avoir assez develloppé ma réponse, pour pallier à cela j'ai mis une copie avec le module ou je rencontre le probleme sur Cjoint : http://cjoint.com/?0Dmq1297fYs Il s'agit de données fictives. Pour rappel, si la listbox contient plusieurs lignes cela fonctionne, par c ntre si celui ci n'a qu'une ligne cela ne fonctionne plus. Merci encore pour votre aide. Bien cordialement. Alex
Alex
RE : Une petite précision, avec le fichier joint, si vous faites le test du us erform avec une selection avec plusieurs lignes, cela bloquera en fin de ma cro sur UserformActivate, ce qui est normal car non joint. Par contre si vo us le faites avec uniquement 1 ligne il beug a partir de For A = 0 to .li stcount -1 Enfin, le but de mon double clic sur la ligne est qu'il se positionnne bien sur la ligne correspondante de ma base apres avoir controle deux entrées le Nom et l'identifiant. Bien cordialement. Alex
RE :
Une petite précision, avec le fichier joint, si vous faites le test du us erform avec une selection avec plusieurs lignes, cela bloquera en fin de ma cro sur UserformActivate, ce qui est normal car non joint. Par contre si vo us le faites avec uniquement 1 ligne il beug a partir de For A = 0 to .li stcount -1
Enfin, le but de mon double clic sur la ligne est qu'il se positionnne bien sur la ligne correspondante de ma base apres avoir controle deux entrées le Nom et l'identifiant.
Bien cordialement.
Alex
RE : Une petite précision, avec le fichier joint, si vous faites le test du us erform avec une selection avec plusieurs lignes, cela bloquera en fin de ma cro sur UserformActivate, ce qui est normal car non joint. Par contre si vo us le faites avec uniquement 1 ligne il beug a partir de For A = 0 to .li stcount -1 Enfin, le but de mon double clic sur la ligne est qu'il se positionnne bien sur la ligne correspondante de ma base apres avoir controle deux entrées le Nom et l'identifiant. Bien cordialement. Alex
Jacquouille
Bonjour Je ne comprends rien à ces choses de useform. Cependant, je me demande s'il est judicieux de commencer une boucle à zéro (for A=0). Je ne connais pas de cellule A0. for A=1 to derL, ou derL-1, peut-être ?
Jacquouille
" Le vin est au repas ce que le parfum est à la femme." "Alex" a écrit dans le message de groupe de discussion :
RE : Une petite précision, avec le fichier joint, si vous faites le test du userform avec une selection avec plusieurs lignes, cela bloquera en fin de macro sur UserformActivate, ce qui est normal car non joint. Par contre si vous le faites avec uniquement 1 ligne il beug a partir de For A = 0 to .listcount -1 Enfin, le but de mon double clic sur la ligne est qu'il se positionnne bien sur la ligne correspondante de ma base apres avoir controle deux entrées le Nom et l'identifiant. Bien cordialement. Alex
Bonjour
Je ne comprends rien à ces choses de useform.
Cependant, je me demande s'il est judicieux de commencer une boucle à zéro
(for A=0). Je ne connais pas de cellule A0.
for A=1 to derL, ou derL-1, peut-être ?
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Alex" a écrit dans le message de groupe de discussion :
2d90862e-a167-4051-8130-4019fbbe8803@googlegroups.com...
RE :
Une petite précision, avec le fichier joint, si vous faites le test du
userform avec une selection avec plusieurs lignes, cela bloquera en fin de
macro sur UserformActivate, ce qui est normal car non joint. Par contre si
vous le faites avec uniquement 1 ligne il beug a partir de For A = 0 to
.listcount -1
Enfin, le but de mon double clic sur la ligne est qu'il se positionnne bien
sur la ligne correspondante de ma base apres avoir controle deux entrées le
Nom et l'identifiant.
Bien cordialement.
Alex
Bonjour Je ne comprends rien à ces choses de useform. Cependant, je me demande s'il est judicieux de commencer une boucle à zéro (for A=0). Je ne connais pas de cellule A0. for A=1 to derL, ou derL-1, peut-être ?
Jacquouille
" Le vin est au repas ce que le parfum est à la femme." "Alex" a écrit dans le message de groupe de discussion :
RE : Une petite précision, avec le fichier joint, si vous faites le test du userform avec une selection avec plusieurs lignes, cela bloquera en fin de macro sur UserformActivate, ce qui est normal car non joint. Par contre si vous le faites avec uniquement 1 ligne il beug a partir de For A = 0 to .listcount -1 Enfin, le but de mon double clic sur la ligne est qu'il se positionnne bien sur la ligne correspondante de ma base apres avoir controle deux entrées le Nom et l'identifiant. Bien cordialement. Alex
Quand tu veux obtenir la dernière ligne occupée dans une colonne débutes par la fin : Range("A65536").end(xlup).row et non Range("A1").end(xldown).row
Fait des tests et regarde ce que cela te donne : Range("A1").end(xldown).row A ) lorsque tu as seulement un A1 comme cellule occupée B ) lorsque tu as seulement un A1:A2 comme cellules occupées C ) Et qu'est-ce qui se passe si tu as une cellule vide au milieu de tes données...
Dans la procédure du formulaire : btnRech_Click()
Dans le classeur que tu m'as envoyé, cette plage n'est pas définie Range("GDP!Extraction").Address
Range("GDP!CRITERE").Address Celle-ci représente seulement la plage HP1:HT1
J'ai modifié le code pour effectuer le filtre avancé comme ceci : Tu peux le modifier si tu veux, mais il doit fonctionner!!! '************************************************* With Feuil5 'ou worksheets("GDP") With .Range("Base") .AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:þuil5.Range("HP1:HT2"), _ CopyTorange:=.Range("HW1:iA1"), unique:úlse End With
''Alimentation de liste avec les donnees de la zone d'extraction dernierRechnom = .Range("IA65536").End(xlUp).Address ListBox1.RowSource = .Name & "!HW2:" & dernierRechnom End With '*************************************************
Dans la procédure du double-clic, j'ai modifié la dernière section de la procédure comme suit :
SelectModif.Hide Dim i As Integer i = ActiveCell.Row Cells(i, 1).Select ModifPerso.Show Unload Me
A ) ton fichier de retour : http://cjoint.com/?CDmsmSDZWAZ
Quand tu veux obtenir la dernière ligne occupée dans une colonne
débutes par la fin : Range("A65536").end(xlup).row
et non Range("A1").end(xldown).row
Fait des tests et regarde ce que cela te donne :
Range("A1").end(xldown).row
A ) lorsque tu as seulement un A1 comme cellule occupée
B ) lorsque tu as seulement un A1:A2 comme cellules occupées
C ) Et qu'est-ce qui se passe si tu as une cellule vide au milieu
de tes données...
Dans la procédure du formulaire : btnRech_Click()
Dans le classeur que tu m'as envoyé, cette plage n'est pas définie
Range("GDP!Extraction").Address
Range("GDP!CRITERE").Address
Celle-ci représente seulement la plage HP1:HT1
J'ai modifié le code pour effectuer le filtre avancé comme ceci :
Tu peux le modifier si tu veux, mais il doit fonctionner!!!
'*************************************************
With Feuil5 'ou worksheets("GDP")
With .Range("Base")
.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:þuil5.Range("HP1:HT2"), _
CopyTorange:=.Range("HW1:iA1"), unique:úlse
End With
''Alimentation de liste avec les donnees de la zone d'extraction
dernierRechnom = .Range("IA65536").End(xlUp).Address
ListBox1.RowSource = .Name & "!HW2:" & dernierRechnom
End With
'*************************************************
Dans la procédure du double-clic, j'ai modifié la dernière section
de la procédure comme suit :
SelectModif.Hide
Dim i As Integer
i = ActiveCell.Row
Cells(i, 1).Select
ModifPerso.Show
Unload Me
Quand tu veux obtenir la dernière ligne occupée dans une colonne débutes par la fin : Range("A65536").end(xlup).row et non Range("A1").end(xldown).row
Fait des tests et regarde ce que cela te donne : Range("A1").end(xldown).row A ) lorsque tu as seulement un A1 comme cellule occupée B ) lorsque tu as seulement un A1:A2 comme cellules occupées C ) Et qu'est-ce qui se passe si tu as une cellule vide au milieu de tes données...
Dans la procédure du formulaire : btnRech_Click()
Dans le classeur que tu m'as envoyé, cette plage n'est pas définie Range("GDP!Extraction").Address
Range("GDP!CRITERE").Address Celle-ci représente seulement la plage HP1:HT1
J'ai modifié le code pour effectuer le filtre avancé comme ceci : Tu peux le modifier si tu veux, mais il doit fonctionner!!! '************************************************* With Feuil5 'ou worksheets("GDP") With .Range("Base") .AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:þuil5.Range("HP1:HT2"), _ CopyTorange:=.Range("HW1:iA1"), unique:úlse End With
''Alimentation de liste avec les donnees de la zone d'extraction dernierRechnom = .Range("IA65536").End(xlUp).Address ListBox1.RowSource = .Name & "!HW2:" & dernierRechnom End With '*************************************************
Dans la procédure du double-clic, j'ai modifié la dernière section de la procédure comme suit :
SelectModif.Hide Dim i As Integer i = ActiveCell.Row Cells(i, 1).Select ModifPerso.Show Unload Me
Je voulais juste dire concernant mes zones, celles ci on du bouger au momen t ou j'ai oté tous les elements "véritables données" et les 500 ligne s de la base. Pour la zone CRITERE, j'avais bien définie la plage HP1:HT2
J'ai donc décortiqué ton code pour bien comprendre mes erreurs, déja celles-ci commencaient sur la définition du filtre et non sur le double c lic. J'ai compris qu'il faut que j'apprenne à decomposer les niveau de Ra nge avec l'utilisation de with et end with pour decomposer les étapes (j' avais deja renommer ma feuille car le nom etait plus long et composé et c ela engendrait deja des beug, le fait de l'avoir simplifier GDP avait sans doute permis une semi interprétation de mon code erronné)et utilisé F euil plutot que le nom donné à la feuille.
En tout cas un grand merci pour cette aide précieuse, je le dis a chaque fois mais c'est vrai et sincere.
Bien cordialement. Alex
Re bonjour,
Merci Denis pour cette réponse très complète ;)
Je voulais juste dire concernant mes zones, celles ci on du bouger au momen t ou j'ai oté tous les elements "véritables données" et les 500 ligne s de la base. Pour la zone CRITERE, j'avais bien définie la plage HP1:HT2
J'ai donc décortiqué ton code pour bien comprendre mes erreurs, déja celles-ci commencaient sur la définition du filtre et non sur le double c lic. J'ai compris qu'il faut que j'apprenne à decomposer les niveau de Ra nge avec l'utilisation de with et end with pour decomposer les étapes (j' avais deja renommer ma feuille car le nom etait plus long et composé et c ela engendrait deja des beug, le fait de l'avoir simplifier GDP avait sans doute permis une semi interprétation de mon code erronné)et utilisé F euil plutot que le nom donné à la feuille.
En tout cas un grand merci pour cette aide précieuse, je le dis a chaque fois mais c'est vrai et sincere.
Je voulais juste dire concernant mes zones, celles ci on du bouger au momen t ou j'ai oté tous les elements "véritables données" et les 500 ligne s de la base. Pour la zone CRITERE, j'avais bien définie la plage HP1:HT2
J'ai donc décortiqué ton code pour bien comprendre mes erreurs, déja celles-ci commencaient sur la définition du filtre et non sur le double c lic. J'ai compris qu'il faut que j'apprenne à decomposer les niveau de Ra nge avec l'utilisation de with et end with pour decomposer les étapes (j' avais deja renommer ma feuille car le nom etait plus long et composé et c ela engendrait deja des beug, le fait de l'avoir simplifier GDP avait sans doute permis une semi interprétation de mon code erronné)et utilisé F euil plutot que le nom donné à la feuille.
En tout cas un grand merci pour cette aide précieuse, je le dis a chaque fois mais c'est vrai et sincere.