Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme sur double clic sur selection Ligne

7 réponses
Avatar
Alex
Bonjour =E0 tous,

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

7 réponses

Avatar
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!



MichD
---------------------------------------------------------------
Avatar
Jacquouille
Denis,

Puis-je me permettre ?
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!



MichD
---------------------------------------------------------------
Avatar
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
Avatar
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
Avatar
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
Avatar
MichD
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



MichD
---------------------------------------------------------------
Avatar
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.

Bien cordialement.
Alex