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

XL 2013 Userform ne fonctionne pas s'il manque des Numéros de liste

candido57

XLDnaute Occasionnel
Bonjour,
Il y a quelques temps vous m'avez aidé pour faire mon fichier qui fonctionne très bien.
La seule chose que je n'ai pas réussi à régler , c'est le faite que lorsque sur ma liste de la colonne A la numérotation ne se suit pas, dans l'userform, les valeurs ne sont pas bonnes, elles sont décalés
Actuellement sur le fichier qui fonction, je suis obligé de mettre des lignes vides pour avoir en colonne A des chiffres qui se suivent.
Par exemple 1 -2 3 -4 -5 -6 -7 -8 -9 mon fichier fonctionne
Mais si j'ai 2 - 4 -5 -7 -9 -11 -42 - 63 - 110 Mon fichier ne me met pas correctement les infos, elles ne va pas chercher l'info au bonne endroit

Merci merci d'avance pour votre aide.
 

Pièces jointes

  • Produit complémentaire 2.xlsm
    179.7 KB · Affichages: 13

PierreMalta

XLDnaute Nouveau
bonjour Candido
c'est un peu normal, vous identifiez le numéro de ligne du client par son numéro de carte +4.
voici un correctif
VB:
'Ligne = Me.ComboBox_Carte.ListIndex + 4
Ligne = ws.Range("B4:B1000").Find(ComboBox_Carte).Row

bon code
 

candido57

XLDnaute Occasionnel
Bonjour,

Déjà un grand merci pour ton aide.
Mon code actuel est le suivant.
Où sur quel ligne dois je changer ta correction ? J'ai essayé , mais je ne parviens pas .

Private Sub ComboBox_Carte_Change()
Dim Ligne As Long
'Application.Calculation = xlCalculationAutomatic

'Donnée en auto dans UserForm
If Me.ComboBox_Carte.ListIndex = -1 Then Exit Sub
NumCarte = Me.ComboBox_Carte
Me.Tbx_Qté.Value = 1 'valeur par défaut
With Sheets("Donnée").ListObjects("t_Donnée")
Me.Tbx_Nom = .ListColumns("Nom").DataBodyRange(NumCarte) 'Nom
Me.Tbx_Prénom = .ListColumns("Prénom").DataBodyRange(NumCarte) 'Prénom
Me.Tbx_NbPoints = .ListColumns("Point").DataBodyRange(NumCarte) 'Nombre de points
Me.Tbx_Alimentation = .ListColumns("Alimentation").DataBodyRange(NumCarte) 'Alimentation
Me.Tbx_FamilleDe = .ListColumns("Famille de").DataBodyRange(NumCarte) 'Nombre par famille
Me.Tbx_Jour = .ListColumns("Jour").DataBodyRange(NumCarte) 'Jour
Me.Tbx_Heure = Format(.ListColumns("Heure").DataBodyRange(NumCarte), "hh""h""mm") 'Heure
Me.Tbx_Naissance = Format(.ListColumns("Naissance").DataBodyRange(NumCarte), "dd/mm/yyyy") 'Naissance
Me.Tbx_Dotation = .ListColumns("Dotation accordée").DataBodyRange(NumCarte) 'Dotation
Me.Tbx_Mois = .ListColumns("Mois").DataBodyRange(NumCarte) 'Mois
End With
 

ChTi160

XLDnaute Barbatruc
Bonjour le Fil
Tu dis :
Mon code actuel est le suivant.
mais dans le fichier joint , je n'ai pas trouvé de tableau structuré "t_Donnée"
dans le fichier que je joins , j'ai travaillé que les données de la Feuille "Données" (Sans TS)
il faudrait que tu mettes le Fichier sur lequel tu travailles
ce n'est pas très Clair tout ça ! Lol
ou trouve t'on ceux ci ?
VB:
Me.Tbx_Jour = .ListColumns("Jour").DataBodyRange(NumCarte) 'Jour
Me.Tbx_Heure = Format(.ListColumns("Heure").DataBodyRange(NumCarte), "hh""h""mm") 'Heure
Me.Tbx_Naissance = Format(.ListColumns("Naissance").DataBodyRange(NumCarte), "dd/mm/yyyy") 'Naissance
Me.Tbx_Dotation = .ListColumns("Dotation accordée").DataBodyRange(NumCarte) 'Dotation
Me.Tbx_Mois = .ListColumns("Mois").DataBodyRange(NumCarte) 'Mois
Jean marie
 

Pièces jointes

  • Produit complémentaire Chti160.xlsm
    96.1 KB · Affichages: 1

candido57

XLDnaute Occasionnel
Bonjour,

Oui c'est mieux avec le bon fichier.
Par contre je n'arrive plus à coller les infos en appuyant sur valider.
Je pense que ce n'est pas compatible avec mon MAC.

Merci pour ton aide
 

Pièces jointes

  • Test 20.xlsm
    70.4 KB · Affichages: 1
  • Capture d’écran 2024-01-06 à 15.53.48.png
    115.2 KB · Affichages: 2
Dernière édition:

PierreMalta

XLDnaute Nouveau
Oh, oh, tout a changé, le formulaire( j'ai pas vu mais le code l'indique), les données regroupées en tableau...
De plus j'ignore tout des propriétés de ces tableaux. je travaille sur 2007 et j'ai toutes mes fonctions pour paramétrer mes accès, voici le code que j'utiliserais
a l'initiation du formulaire

VB:
Set ws = Sheets("Donnée").Cells(5, 2)
i = 0
Do While ws <> ""
    If ws.Offset(0, 1) <> "" Then
        ComboBox_Carte.AddItem ws
        ComboBox_Carte.List(i, 1) = ws.Row
        i = i + 1
    End If
Loop
et au choix du numéro de carte
Code:
ni = ComboBox_Carte.ListIndex
If ni = -1 Then
    nl = ComboBox_Carte.List(ni, 1)
    Tbx_Qté.Value = 1
    Tbx_Nom = ws.Cells(nl, 3)
    Tbx_Prénom = ws.Cells(nl, 4)
    '...
End If

bon code
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…