Equivalent VBA de la fonction Index

  • Initiateur de la discussion Initiateur de la discussion jacky72
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jacky72

XLDnaute Nouveau
Bonsoir
habitué des macros XL4, je débute en VBA . XL 2003 sous XP. Soit des cellules adjacentes sur une même ligne :
- nombre de Produits, n° de code Produit : renseignés par l'utilisateur,
- nom et prix unitaire du produit : à récupérer dans une table, en fonction du n° de code Produit : c'est l'objet de ma question, je bloque sur l'équivalent VBA de la fonction XL4 : Index
Merci aux utilisateurs avertis qui se pencheront quelques minutes sur mon fichier exemple. Bonne Année et je vous souhaite à tous de trouver la bonne réponse à vos questions.
 

Pièces jointes

Dernière édition:
Re : Equivalent VBA de la fonction Index

Bonsoir jacky72, bienvenue sur XLD 🙂,

le "bug" vient du fait que comme il s'agit d'une macro évenementielle "feuille change", toute modification de cellule dans la macro fait relancer la macro "en boucle".
Le problème "classique" de ce type de macro.
Voici la solution:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
[B][COLOR="Green"]Application.EnableEvents = False[/COLOR][/B]
If ActiveCell.Column = 3 Then


ActiveSheet.Cells(ActiveCell.Row - 1, 6) = Cells(ActiveCell.Row - 1, 2) * Cells(ActiveCell.Row - 1, 5)

ActiveSheet.Cells(ActiveCell.Row - 1, 7) = Format(Date, "dd mmm") & " " & Format(Time, "hh:mm")
End If
[B][COLOR="Green"]Application.EnableEvents = True[/COLOR][/B]


End Sub
 
Re : Equivalent VBA de la fonction Index

merci pour cette réponse hyper-rapide et efficace, le programme ne plante plus. Il me reste à trouver le code VBA en remplacement de la fonction INDEX, pour afficher les nom et prix unitaire du produit. Toute aide bienvenue.
@+
 
Re : Equivalent VBA de la fonction Index

Bonjour Jacky, skoobi

La fonction INDEX se nomme également Index en VBA. Certaines fonctions d'Excel sont utilisables directement dans le code VBA dans la classe WorkSheetFunction (menu Application/explorateur d'objets.../zone liste classes)

Tu peux l'écrire de deux manières.
... = Application.worksheetfunction.Index(Range("A:A"), 23, 1)
ou
... = Application.Index(Range("A:A"), 23, 1)

Sans vouloir dire de conneries, si tu dois utiliser ton code dans excel 97, c'est la première que tu dois utiliser, elle est aussi compatible avec les versions supérieures.

@+Jean-Marie
 
Re : Equivalent VBA de la fonction Index

bonjour jacky72

Salut skoobi 🙂🙂

Vois si cela te convient
nb : pour pallier la recurence de la macro _change j'utilise un booleen qui a mon avis presente l'avantage de n'agir que sur cette macro

edit : Salut JeanMarie 🙂🙂
 

Pièces jointes

Re : Equivalent VBA de la fonction Index

Bonjour Pierre-Jean, (Jean-Marie, Skoobi)
ta solution est parfaite, je n'en comprends pas encore toute la finesse mais elle me convient.
Un tout petit "défaut" qui n'entrave pas le résultat : après saisie du nombre de produit, et déplacement dans la colonne N° de produit, il y apparait automatiquement un nom de produit, basé sur le nombre de produit.
C'est l'utilisateur qui renseigne le N° de produit qu'il veut acheté. Si l'utilisateur écrit bien le N° du Produit + Entrée, le résultat n'est pas affecté. Quel paramètre dois-je modifier, pour éviter cet affichage automatique inutile ? Encore merci à tous pour votre aide efficace et rapide !
 

Pièces jointes

Re : Equivalent VBA de la fonction Index

Bonjour Jean-Marie
j'utilise XL 2003 sous XP
merci pour tes infos sur les différentes façons d'écrire cette fonction.
Pierrejean m'a bien dépanné en modifiant directement mon fichier exemple. Débutant en VBA, j'ai choisi la solution de facilité : maintenant il me reste à comprendre !
merci
@+
 
Re : Equivalent VBA de la fonction Index

Bonjour à tous,


En l'absence de PJ, je me permets... comme je décortique souvent ses codes (hé là je note le coup du flag 🙂), j'ai juste modifié le activecells.column, par target.column

Bon dimanche,

Ninbihan
 

Pièces jointes

Re : Equivalent VBA de la fonction Index

Bonjour à tous,


En l'absence de PJ, je me permets... comme je décortique souvent ses codes (hé là je note le coup du flag 🙂), j'ai juste modifié le activecells.column, par target.column

Bon dimanche,

Ninbihan
Bonjour Ninbihan
Solution plus que rapide et parfaite. Merci à tous les contributeurs.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour