Problème Fonction listindex

Fermé
AnneL - 2 mai 2020 à 12:53
Le Pingou Messages postés 12043 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 25 avril 2024 - 6 mai 2020 à 22:14
Bonjour,

Je débute sur VBA, entre tuto et forum, et ce n'est pas toujours évident !...
J'ai créé un formulaire de modification avec une combobox cboRecherche dans laquelle j'insère le nom de la personne. J'ai une base de donnée avec les noms et adresse des personnes (dans la feuille ADRESSE).
Je voudrais modifier à l'aide de ce formulaire les coordonnées de la personne.
Je veux donc me positionner sur la cellule contenant le nom.
J'ai créé ce code

Dim ligneAdresse As Integer
ligneAdresse = cboRecherche.ListIndex + 2

Sheets("ADRESSE").Select

ActiveSheet.Unprotect ("")

Cells(ligneAdresse, 1).Activate

Et je ne comprend pas car parfois il se positionne bien et parfois non (il se met sur une autre ligne qui n'a rien à voir !!). Y-a-t-il une erreur dans mon code ?

En amont de ce code je fais des modif sur une autre feuille. Est-ce que cela peut perturber ce code ?

Merci à vous pour votre aide...


Configuration: Windows / Firefox 75.0
A voir également:

13 réponses

Ça marche !! J'ai fait plusieurs essais.
Merci encore.
A bientôt peut-être sur le forum...
Bonne soirée
1
Le Pingou Messages postés 12043 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 25 avril 2024 1 426
2 mai 2020 à 17:49
Bonjour,
Si possible, mettre le fichier sur https://www.cjoint.com/ et poster le lien
Je regarderai ou est le problème.

0
J'ai déposé mon fichier.
https://www.cjoint.com/c/JEctWT3VtUp

J'ai aussi essayé avec la fonction Find (Dans Userform1) mais ça ne marche pas non plus.
Merci
0
Le Pingou Messages postés 12043 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 25 avril 2024 1 426
Modifié le 2 mai 2020 à 23:13
Bonsoir,
Merci pour le dossier. Un passage rapide et je trouve 2 fois le même nom (666666) en ligne 2 et 4 ....est-ce là votre problème ...!

0
Non, c'est la conséquence du problème. J'ai fait des essais en partant d'une base vide et en la remplissant via "Ajouter un bénéficiaire" puis "affecter une tournée" puis "arreter un bénéficiaire" et c'est là que ça commence à ne plus aller car il modifie la mauvaise ligne dans le tableau ADRESSE.
Je pense que le plus simple serait de passer par la fonction find pour le positionner sur la cellule du nom que je recherche mais je ne comprend pas pourquoi ça ne marche pas non plus.


Dim Valeur As Integer
Valeur = cboRecherche

Sheets("ADRESSE").Select

Sheets("ADRESSE").Columns(4).Find(What:=Valeur, LookAt:=xlWhole, MatchCase:=True).Activate

Il ne comprend pas Valeur alors que je l'ai défini avant...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Germain_612 Messages postés 16 Date d'inscription mardi 31 décembre 2019 Statut Membre Dernière intervention 16 août 2022
3 mai 2020 à 12:46
Salut Annel....

Tu dois jouer seulement avec le numéro de ListIndex;
Comme tu as fait +2, essaie +1 où +3 où encore +4 et tu verras que sa marcheras!

Merci......
0
Le Pingou Messages postés 12043 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 25 avril 2024 1 426
3 mai 2020 à 16:45
Bonjour,
J'ai fait des essais en la remplissant via "Ajouter un bénéficiaire" 5 personnes puis j’ai "affecter une tournée" différente à chaqu’unes et pour terminer j’ai mis à l’arrêt 3 personnes via "arreter un bénéficiaire». Je constate que tout fonctionne correctement.
Ou alors c'est une autre manipulation....!
Merci du retour.

0
C 'est dans l'étape d'après, reprise d'un bénéficiaire que ça bug...
0
Le Pingou Messages postés 12043 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 25 avril 2024 1 426
Modifié le 3 mai 2020 à 21:11
Bonsoir,
Merci, mais le dire de suite aurait été plus profitable...!
Et quelle action vous réalisez ?
Merci de m'expliquer ce doit faire La reprise d'un bénéficiaire (je n'ai peut-être pas le bon suivi...)

0
Oups, désolée, c'est vrai. Je pensais que c'était plus clair dans mon 1er message...
La reprise bénéficiaire récupère un bénéficiaire qui a été arrêté (qui est donc dans l'onglet arrêt et qui est marqué ARRET dans la colonne 1 du tableau général "ADRESSE") et le remet sur une tournée (Centre, Mutuelle, petite tournée, tournée 4 ou 5). Ainsi, il faut inclure ce nouveau bénéficiaire dans la tournée choisie (qu'on indique dans la cboTournee dans frmReprise), et modifier le tableau global (onglet adresse) pour lui réaffecter la tournée et un éventuel commentaire. C'est cette dernière opération qui pose problème car je voudrais qu'Excel se positionne dans l'onglet adresse, sur la ligne qui contient le nom du bénéficiaire. Et là, parfois, il se positionne bien, parfois sur la ligne du dessus, parfois sur celle du dessous. Du coup, il me modifie la mauvaise ligne ce qui met le bazar dans la base de données...
Je sais pas si je suis très claire, c'est pas toujours évident d'expliquer cela par message.
J'ai essayé comme le suggérais Germain_612 de jouer sur le +1 +2 ou +3 de la listindex mais ça ne marche pas. Ce qui est le plus bizarre, c'est que parfois il se positionne bien, parfois non...
0
J'ai refait des essais et j'ai l'impression que c'est quand ca concerne la tournée Mutuelle que ça ne va plus. Mais pourquoi un onglet plus qu'un autre ! Je ne comprend plus rien !!
0
Le Pingou Messages postés 12043 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 25 avril 2024 1 426 > AnneL
3 mai 2020 à 22:46
Bonsoir Annel,
Merci infiniment de votre explication. Je reprend le tout demain et j'espère trouver la cause et le remède.
Bonne fin de soirée.
Salutations.
Le Pingou
0
Le Pingou Messages postés 12043 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 25 avril 2024 1 426
4 mai 2020 à 08:42
Bonjour,
Ce matin j’ai tout recommencé avec une base vide et dès que j’affecte une tournée, il inséré le bénéficiaire avent la ligne des titre (incompréhensible pour l’instant) et ceci quel que soit la tournée.
De plus j’ai trouvé la macro suivante, à quoi sert-elle (Feuil3.Range("K2").Value…..)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'On enclenche l'ouverture uniquement sur la zone de sélection
If Not Intersect(Target, Range("D2:D500")) Is Nothing And Range("D" & Target.Row).Value <> Empty Then
Feuil3.Range("K2").Value = Target.Row
End If
End Sub


0
En effet, elle ne sert à rien. Je ne sais pas du tout d'où elle vient. Je n'arrive pas à la retrouver pour la supprimer. Comme je vous l'ai dit, je débute en VBA.
0
Le Pingou Messages postés 12043 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 25 avril 2024 1 426
Modifié le 4 mai 2020 à 11:00
Bonjour,
Je viens de mettre le doigt sur le problème, lors de la reprise il faut rechercher dans la feuille « ADRESSE » la ligne qui correspond au bénéficiaire de la reprise et ce n’est pas le numéro qui provient de la « cboRecherche.ListIndex » …… ?
Reste plus qu’à corriger le code et faire nouveau test.


0
Merci infiniment pour votre aide. C'est vraiment très sympa de votre part de prendre du temps pour régler mon problème.

Je ne sais pas quel code mettre pour qu'il recherche la bonne cellule dans la feuille ADRESSE. J'ai essayé de simplement sélectionner la feuille adresse avant de définir Integer, mais ça ne marche pas (ça aurait été trop beau !).
Du coup, ce n'est pas la fonction Listindex qu'il faut utiliser ?
Je reviens à mon idée initiale d'utiliser une fonction Find, mais du coup, je ne comprends pas pourquoi ça ne marche pas non plus...

Dim Valeur As Integer
Valeur = cboRecherche
Sheets("ADRESSE").Select
Sheets("ADRESSE").Columns(4).Find(What:=Valeur, LookAt:=xlWhole, MatchCase:=True).Activate

Je n'arrive pas à déterminer Valeur : que je lui mette cboRecherche ou txtNom ou la valeur de la cellule qui contient le nom du bénéficiaire à modifier sur la tournée d'origine Cell(ligne,4).Value, il ne me le prend pas, il bug....
Comment définir Valeur pour qu'il récupère le nom de mon bénéficiaire à modifier ?

Merci encore
0
Le Pingou Messages postés 12043 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 25 avril 2024 1 426 > AnneL
5 mai 2020 à 11:32
Bonjour Annel,
Je vous remercie infiniment d'avoir télécharger le fichier corriger et adapter (poste 16).
Bonne semaine.
Salutations.
Le Pingou
0
Le Pingou Messages postés 12043 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 25 avril 2024 1 426
4 mai 2020 à 17:40
Bonjour,
La mise à jours de la feuille « ADRESSE » se fait en récupérant la ligne correspondant au numéro de référence du Bénéficiaire (pas la même ligne que dans les autres feuilles){Cela évite le problème de Nom/Prénom identique}
Pour se faire j’ai introduit une colonne supplémentaire (Ref) avec numéro automatique. J’ai adaptée les lignes de code pour tenir compte du décalage d’une colonne.
Je vous laisse la découverte et vous revenez sans autre si le moindre problème.

Votre fichier : https://mon-partage.fr/f/LBQDss2T/

0
Le Pingou Messages postés 12043 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 25 avril 2024 1 426
4 mai 2020 à 19:40
Bonjour,
Vous avez la solution dans le fichier envoyer au poste 16 pour cela il faut le télécharger......
Salutations
0
Bonjour Le Pingou

Merci beaucoup. Je n'ai pas eu le temps de travailler dessus hier.
Ça a l'air de marcher. Je regarde un peu plus attentivement et fait des essais pour voir si tout est OK. Je vous tiens au courant.
Merci 1000 fois.
Pour info, je travaille pour une ville et ce fichier va nous permettre de mieux gérer les tournées de distribution de repas à domicile pour les personnes fragiles. Les bénéficiaires de ce service ont doublé depuis la crise du COVID, ce qui nous a obligé à mieux nous organiser et à créer ce fichier.
Bonne soirée.
0
Le Pingou Messages postés 12043 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 25 avril 2024 1 426
6 mai 2020 à 22:14
Bonsoir,
Merci, content pour vous que cela profite aux bénéficiaires de votre ville.
0