Fonction INDEX ne donne pas le résultat

Bonjour, dans un tableau à deux entrées je veux rechercher une somme en fonction de deux critères: type et durée.

L'indice "type" est une lettre, l'indice "durée" est un nombre entier (15,30,50). J'ai crée une fonction INDEX dont voici le dé;veloppé:

=INDEX(P19:Y22;EQUIV(N16;O19:O22;0);EQUIV(N15;P18:Y18;0))

P19:Y22 est la plage de recherche

N16 est la cellule contenant l'indice de la colonne (plage O19:O22)

N15 est la cellule contenant l'indice de la ligne (plage P18:Y18)

Dans une application en VBA les cellules N15 et N16 sont renseignées par copier-coller, mais le résultat ne s'affiche pas (N#A)

mais quand je rentre les données manuellement le résultat s'affiche. Il me semble que c'est le nombre qui n'est pas reconnu (cellule N16)

Et pourtant cette fonction est active dans d'autres applications similaires. Je ne comprends plus rien. Quelqu'un a -t-il la solution?

Merci a (aux) contributeurs , au plaisir de vous lire, CAP

Bonjour,

Est-il possible de nous joindre un exemple du fichier provenant de ton application VBA ?

Etrange que lorsque vous rentrez à la main cela fonctionne. Avez-vous vérifier les format des cellules, notamment celui des durée ?

La formule en elle même ne me parait pas incohérente.

Cdlt,

Bonjour, mon fichier est bien trop lourd (10 Mo) je vais devoir creer un petit fichier très simplifié. Je reviendrai vers vous à ce moment là. Bonne continuation, CAP

Bonjour,

Oui le strict minimum suffira. Le site accepte les fichiers de moins de 1.5 Mo.

Cdlt,

Le fichier joint reflète exactement le processus réalisé en VBA, mais ici cela fonctionne !! Alors que dans l'application c'est l'échec.........

J'ai pu déterminer que c'est bien le nombre (nombre entier) qui n'est pas reconnu, et ce quel que soit le format que j'applique à la cellule. Quand je l'insère manuellement le résultat s'affiche. Mystère........Je croise les doigts !!

13essai-index.xls (47.00 Ko)

Bonjour,

Ici je suppose que N16 est en réalité I2 ? Est il possible d'avoir l'extrait du code permettant de renseigner N16 à partir de l'application ?

Il faut en effet que les format soient similaires, tous dépendrait donc du renseignement de N16. Nous avons déjà identifié la root cause, il ne reste qu'à la traiter.

Cdlt,

Edit : Si vous ne souhaitez pas vous embêter, vous pouvez me joindre le fichier source par MP, je respecterais la confidentialité de ce dernier.

Bonjour, en pièce jointe j'ai mis un fichier WORD qui détaille le processus de mise en place des différents éléments. Cela m'a semblé plus simple pour faire ressortir les commentaires. J'ai vérifié et harmonisé les formats des cellules susceptibles de contenir la valeur "durée" (numérique sans décimales) mais le résultat est toujours le même. Je confirme que si je place cette valeur manuellement, le résultat s'affiche!

Merci pour votre aide, bonne journée, CAP

6essai-index.xls (47.00 Ko)

Bonjour,

Merci pour les explications.

J'ai testé sur votre fichier la macro que vous m'avez jointe (du moins un passage) afin de reproduire le prétendu problème. Mais je n'y arrive pas, voyez par vous même.

Le soucis m'a l'air d'être sur ces lignes mais il me faudrait à minima un bout du fichier source avec la range B1:K1. Au passage pas besoin de passez par des .Select, Selection.Copy, tout peut être largement optimisé (je pense que la macro a été faite à l'aide de l'enregistreur de macro).

Worksheets("Feuil2").Activate
 range("B1:K1").Select  
  Selection.Copy    ‘on copie toutes les caractéristiques sauf la “date de fin” (formule) et le “montant »
Worksheets("calcul").Activate
  range("F2").Select
   Selection.PasteSpecial Paste:=xlValues
    Selection.PasteSpecial Paste:=xlValues     ‘à ce moment là devrait apparaître le « montant » dans la cellule dédiée ainsi que dans la cellule dédiée au résultat de la fonction INDEX (liaison entre les deux cellules)
Worksheets("Feuil2").Activate
 range("L1:O1").Select     'nom concess histo + non paye
  Selection.Copy

Cdlt,

J'ai complété le fichier avec le code source demandé. Je suis bien conscient que ma bafouille est grandement optimisable, et je ne demande qu'à me perfectionner. Je ferai les modifs nécessaires. Effectivement le problème ne se produit jamais avec le fichier de démo! Mais comment cerner la cause dans l'appli? Merci en tout cas

5codes-source.docx (16.88 Ko)

Bonjour,

Comment cerner la cause dans l'appli ? Me fournir le fichier par MP m'aiderait grandement :)

Pour le moment j'évolue avec un fichier recréé artificiellement mais ce n'est vraiment pas simple ..

Si vous renseignez la valeur à l'aide d'un USERFORM avez vous tenté l'action de formater la valeur a la sortie du collage ? Ou juste avant ?

Cdlt,

3test.xlsm (17.08 Ko)

Bonjour, je vous joins le fichier simplifié au maximum et compressé (zip)

Je n’ai pas réussi à envoyer par MP j’ai un message « erreur 404, la page n’existe pas ».

Pour tester, aller sur l’onglet « accueil » (en bas de page) clic sur le bouton « nouvelle inscription » et remplir le « userform » en choisissant comme destination « ancien » et comme réf « C15 » ou « C46 » (les deux sont crées).

Aller sur feuille « liste défunts » pour voir le résultat. Le tableau et la fonction INDEX sont sur la feuille « codes » le calcul et la mise en forme sont feuille « calcul ».

J’ai testé l’appli sur un autre appareil équipé en Office 2010, même résultat. D’autres applis similaires réalisées auparavant fonctionnent pourtant sans problème sur les deux postes (je duplique une appli précédente macros désactivées et je l’adapte à la nouvelle situation). Donc cette version comporte une erreur quelque part, mais ou ?

Merci de me consacrer de votre temps car je commence à me décourager. Je reste à votre disposition, bonne fin de semaine, CAP

Bonjour,

Dans votre feuille concessionnaire, colonne K, convertissez vos valeurs en nombre (vous aurez un petit triangle vert avec une flêche vous y invitant, ou sinon rentrez dans la cellule et taper sur entrer) . Même si le format de la cellule est en nombre, à l'intérieur il ne le sont pas.

Je vous conseille par la même occasion de supprimer le fichier car il contient des données confidentielles. L'ayant à disposition nous pourrons désormais travailler en simultané.

Si vous avez besoin d'aide pour alléger votre code n'hésitez pas.

Cdlt,

Bonjour, merci pour ces précisions. J'ai vérifié sur la feuille "CONCESSIONNAIRES", il y a bien un petit triangle dans le coin gauche supérieur de la cellule "durée". Malgré cela le montant n'est pas placé. J'ai également rajouté dans le code (partout) une ligne pour formater la cellule "durée" en "nombre" . Par ex: range("K2").select selection.numberformat="0". Mais sans résultat. Comment faut-il alors procéder?

Car ce triangle n'apparaît pas dans la cellule contenant la valeur "durée" sur la feuille "codes" et ceci explique peut-être que la fonction ne donne pas le résultat. Or le résultat apparaît si je rentre cette valeur manuellement. Là je suis perplexe!!

Pour alléger le code: sur l'extrait que je vous ai fait parvenir, pourriez vous surligner ce qui peut être supprimé, je passerai alors en revue l'intégralité de mon appli.

Bonjour,

N'étant pas disponible ce WE, je vous fais un retour lundi.

Mais nous avançons chez moi la manipulation avait fonctionnee.

Passez un bon WE.

Cdlt,

Bonjour, j'ai fait un test pour essayer de reproduire le phénomène sans y parvenir. Je joins deux fichiers exemple. Pour le moment j'ai une solution pour que mon appli soit opérationnelle (voir fichier "alphanumérique) mais je veux trouver ou cela coince. Bonne semaine, CAP

2classeur1.zip (16.75 Ko)

Bonjour,

Je m'y penche ajd je ne t'oublies pas CAP ! :)

cdlt,

Bonjour,

Comme convenu ci-joint votre fichier avec un code plus lisible, même s'il y a encore du travail ! Pour le format numérique ça m'a l'air résolu, je vous laisse tester et me confirmer.

Par contre j'ai l'impression qu'il y a un comportement bizarre avec les couleurs de remplissage du plan. Pourriez-vous m'indiquer le comportement que vous souhaiteriez en fonction de quoi et qu'est ce qui est colorié ?

Autre chose : via la refonte complète du code, la feuille "Feuil2" a été supprimée, elle ne servait à rien.

Dans l'attente de votre retour.

Cordialement,

Bonjour, merci pour ce bout de code que je vais devoir étudier plus en profondeur car je ne perçois pas toutes les subtilités. Après mise en place dans l'appli, quatre constats:

J'ai du "neutraliser" les deux lignes: Worksheets("LISTE DEFUNTS").Sort.Apply qui généraient un message d'erreur

le montant s'affiche maintenant correctement, mais je ne sais pas pourquoi et grâce à quelle instruction

par contre les caractéristiques du concessionnaires historique (Colonne T à V) ne sont pas transférées sur la feuille ("LISTE DEFUNTS")

la couleur du plan ne change pas selon le critère "active " ou "échue" , le critère est bien présent feuille ("plan") mais la cellule de destination n'est pas trouvée. Je vais me pencher sur ce dysfonctionnement pour trouver par moi-même, mais cette semaine je n'aurai pas le temps.

Cet aspect visuel du plan permet d'un seul coup d’œil de voir la situation de chaque concession et déclencher ainsi une relance de paiement

Je vous tiendrai au courant de mes investigations dès que j'aurai avancé. Bonne semaine et merci encore, CAP

Bonjour CAP24,

En effet j'avais executé le mode pas à pas et avait activé manuellement les feuilles juste avant le tri afin de m'assurer des actions.

Pour les tris il est nécessaire d'activer la feuille en amont.

Par contre pour le critère active/échue, c'est assez difficile à comprendre pour moi car on le retrouve à plein d'endroit différents, on fait des c/c de cette valeur à droite à gauche mais je n'arrive pas à savoir ce qu'elle représente exactement, quelle en est l'origine et qu'est ce qu'on veut en obtenir.

Comme tu le constates le fichier reste assez "flou". Par exemple, une mise en forme conditionnelle (MEFC) serait plus simple d'utilisation et dynamique et fonction de ta liste des défunts : on cherche la date de fin de concession correspondant à la référence de concession et on y applique la couleur de ton choix si c'est échu, permanent, ou toujours actif.

Reste à savoir comment tu souhaites gérer la succession temporelle d'une même concession, à savoir quelle date est à prendre en compte s'il y a plusieurs défunts sur une même concession.

Comme tu le vois, j'essaie de me projeter dans le fichier et ton corps de métier, mais ce n'est pas évident.

Cdlt,

PS : Pour les nombres, comme je l'avais dit, il s'agit d'un format qui n'était pas reconnu en temps que tel. Les nombres n'étaient pas des vrais nombres dû aux multiples c/c sur diverses feuilles.

Bonjour Ergotamine, je peux enfin consacrer quelques instants. Mais d'abord une précision: cette appli est destinée à une petite commune (- de 700 habitants) et je le fais bénévolement, comme d'ailleurs pour une vingtaine de communes déjà équipées pareil. C'est pourquoi je ne comprends pas que maintenant cela ne fonctionne plus.

J'ai "transféré " le code sur mon appli et je constate que

- blocage au niveau de la 1ere ligne Worksheets("LISTE DEFUNTS").Sort.Apply message :" erreur 1004, la méthode select de la classe Range a échoué" et si je neutralise cette instruction le remplissage de la feuille "calcul" est bien exécuté mais le tri n'est pas réalisé, or il le faut pour être certain d'avoir copié le dernier numéro de ligne enregistré. La "liste defunts" est bien remplie en totalité, mais le plan n'est pas mis à jour (remplissage de la cellule contenant la ref concession, cette cellule n'étant pas sélectionnée). J'ai bien essayé de modifier le code en restant dans l'optique "simplification" mais je n'y arrive pas. De toute manière il y a blocage au niveau de la seconde ligne de tri avec le même message d'erreur ainsi que pour la suivante ( Worksheets("LISTE").Sort.Apply)

S'il était possible de vous faire parvenir l'intégralité de l'appli (8,5 Mo) cela faciliterait la compréhension des interactions dans les différentes parties de l'appli. Je vais déjà nettoyer et simplifier partout ou je peux. Belles fêtes de Pâques, au plaisir de vous lire, CAP

Rechercher des sujets similaires à "fonction index donne pas resultat"