Problème Fonction listindex
AnneL
-
Le Pingou Messages postés 12249 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12249 Date d'inscription Statut Contributeur Dernière intervention -
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...
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:
- Virginie organise un rallye avec 30 équipes. elle veut créer un code pour désigner chaque équipe. elle a commencé à la main, mais elle voudrait le faire calculer automatiquement. trouvez ce qu'elle veut faire puis proposez une formule à recopier vers le bas dans la colonne a. quelle formule sera en a9 ?
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
13 réponses
Ça marche !! J'ai fait plusieurs essais.
Merci encore.
A bientôt peut-être sur le forum...
Bonne soirée
Merci encore.
A bientôt peut-être sur le forum...
Bonne soirée
Bonjour,
Si possible, mettre le fichier sur https://www.cjoint.com/ et poster le lien
Je regarderai ou est le problème.
Si possible, mettre le fichier sur https://www.cjoint.com/ et poster le lien
Je regarderai ou est le problème.
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 ...!
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 ...!
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...
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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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......
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......
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.
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.
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...)
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...)
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...
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...
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…..)
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
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.
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.
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
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
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/
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/
Bonjour,
Vous avez la solution dans le fichier envoyer au poste 16 pour cela il faut le télécharger......
Salutations
Vous avez la solution dans le fichier envoyer au poste 16 pour cela il faut le télécharger......
Salutations
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.
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.