Numéro de page d'une valeur

MikaTI

XLDnaute Junior
Bonjour à tous,

Je recherche une solution à un petit problème que je rencontre sur la conception d'un classeur excel. (qui est je pense, un usine à gaz)

Sans entrer dans les détails de la conception de ce fichier, en finalité des macros compilent sur la dernière page nommée "Feuil1" toutes les données qui sont sous forme de tableau dans les autres feuilles de mon classeur.

L'onglet "feuil1" est donc composé de plusieurs pages, comportant plusieurs tableaux... Jusque là rien de compliqué.
En fait dans les premières page de cet onglet, j'ai un premier tableau qui fait office de base de données avec donc plusieurs colonnes. Dans ce fameux tableau, la 1ère colonne indique le type "d'objet" (dont la valeur est soit A ou B) et la quatrième colonne indique le numéro interne (tout le temps différents)
La dernière colonne de ce tableau est le numéro de page. C'est cela que je voudrai trouver suivant les explications ci dessous :

- Après ce tableau de base de données, je retrouve les données de chaque ligne dans des tableaux dans les pages suivantes. Pour les objets type A, j'ai une forme de tableau, pour les données type B j'ai une autre forme de tableau.
Je voudrai pouvoir indiquer dans la dernière colonne du tableau de base de donnée, donc page, dans quelle numéro de page, se trouve le numéro de série indiqué dans la 4eme colonne du tableau base de donnée...

Oula, j'espère que mes explications sont claires...
Je doute de la faisabilité de la chose, car j'ai essayé quelques divers code ou formule mais en vain.

Disponible pour plus d'explications bien entendu ^^

Merci bien :) :)
 

CISCO

XLDnaute Barbatruc
Re : Numéro de page d'une valeur

Bonjour

Deux remarques :
1) Vu que tu as fusionné des cellules, on ne sait pas trop ce que tu appelles 1ère colonne, 4ème colonne... Cela correspond t-il à celles de ton tableau, ou à celles de la feuille ?
2) Où sont les pages dont tu nous parle ? Quand je disais "une partie", il fallait une partie assez grande pour que nous comprenions tout, pas juste le premier tableau de Feuil1.

@ plus
 

MikaTI

XLDnaute Junior
Re : Numéro de page d'une valeur

Bonjour

Deux remarques :
1) Vu que tu as fusionné des cellules, on ne sait pas trop ce que tu appelles 1ère colonne, 4ème colonne... Cela correspond t-il à celles de ton tableau, ou à celles de la feuille ?
2) Où sont les pages dont tu nous parle ? Quand je disais "une partie", il fallait une partie assez grande pour que nous comprenions tout, pas juste le premier tableau de Feuil1.

@ plus

Pour réponse

1) Je parle en effet des colonnes de mon tableau et non de la feuille.

2) Tout y est... voir onglet "explications" de mon fichier...
Ici ma base de donnée ne comporte que 4 lignes donc 4 tableaux dispersés dans les pages suivantes...
 

CISCO

XLDnaute Barbatruc
Re : Numéro de page d'une valeur

Bonjour

Effectivement, je n'étais pas "descendu" assez bas sur la feuille.

1) Qu'appelle-tu n° de page, le n° dans les plages vertes ?
3) Toutes tes pages sont-elles en dessous, ou il y en a t'il aussi à droite de la colonne AA ?

@ plus
 

MikaTI

XLDnaute Junior
Re : Numéro de page d'une valeur

Bonjour

Effectivement, je n'étais pas "descendu" assez bas sur la feuille.

1) Qu'appelle-tu n° de page, le n° dans les plages vertes ?
3) Toutes tes pages sont-elles en dessous, ou il y en a t'il aussi à droite de la colonne AA ?

@ plus

Pas de soucis :)

Pour réponse

1) Non aucun rapport avec les plages vertes... je parle vraiment du numéro de page.
Exemple : doit apparait dans la ligne 1 du tableau de base de donnée à la colonne page = 3 (car les données sont retranscrites à la page 3)
Pour la ligne 2 / page = 3 (car aussi en page 3)
Pour la ligne 3 / page = 4 (car données retranscrites en page 4)
Pour la ligne 4 / page = 5 (car données retranscrites en page 5)
(tu peux voir en faisant en aperçu avant impression que les numéros de pages sont inscrites en pied)

2) Non il n'y aura jamais rien après la colonne Z, tout sera en dessous. Je rappel que le tableau de base de données peut être amené à être sur plusieurs pages.

Merci :)
 

MikaTI

XLDnaute Junior
Re : Numéro de page d'une valeur

Bonjour.

Une alternative : un lien vers la page concernée :

Voir pj

Bonjour

Merci pour votre alternative... Mais en fait le fichier sera imprimé, et le numéro de page est nécessaire et non un lien...
En effet, lorsque le tableau de base de donnée fera 100 lignes par exemple, ça aidera mieux de voir à quel numéro de page se reporter pour voir le détails de la ligne ^^

Merci quand même :)
 

Victor21

XLDnaute Barbatruc
Re : Numéro de page d'une valeur

Re,

Cette formule en Y44, à recopier vers le bas, à défaut de n° de page, vous renverra le n° de ligne :
=SI(STXT($A44;1;2)="Ac";"Ligne "&(EQUIV($L44;$D$1:$D$400;0));"Ligne "&(EQUIV($L44;$I$1:$I$400;0)))
Si vous connaissez le nb de lignes par page, vous pouvez faire le calcul.

Une solution à creuser serait le paramètre 27 de la fonction Excel4 LireCellule()
 

CISCO

XLDnaute Barbatruc
Re : Numéro de page d'une valeur

Bonjour

Cf. en pièce jointe.

Dans Y44
Code:
INDIRECT("A"&SOMMEPROD(((A$62:A$5000&D$62:D$5000="N° interne :"&L44)+(A$62:A$5000&I$62:I$5000="N° interne :"&L44))*(LIGNE(A$62:A$5000)))))

renvoie A62, car sur la ligne 62 se trouve le N° interne donné dans L44. Cette formule ne fonctionne correctement que si le N° d'identité se trouve soit dans la colonne D, soit dans la colonne I, et que l'ensemble des tableaux fini avant la ligne 5001.

La fonction personnalisée NumeroPage, proposée par Laurent Longre et trouvée sur le net, détaillé dans un module, renvoie le n° de la page contenant A62.


Cela fonctionne, mais c'est très lent sur mon ordinateur (une dizaine de secondes juste pour 4 valeurs !!!!). Je regarde si je ne peux pas trouver une astuce pour que cela tourne plus vite.

@ plus
 

Pièces jointes

  • classeur MIKATI.xlsm
    34.7 KB · Affichages: 44
Dernière édition:

MikaTI

XLDnaute Junior
Re : Numéro de page d'une valeur

Bonjour

Cf. en pièce jointe.

Dans Y44
Code:
INDIRECT("A"&SOMMEPROD(((A$62:A$5000&D$62:D$5000="N° interne :"&L44)+(A$62:A$5000&I$62:I$5000="N° interne :"&L44))*(LIGNE(A$62:A$5000)))))

renvoie A62, car sur la ligne 62 se trouve le N° interne donné dans L44. Cette formule ne fonctionne correctement que si le N° d'identité se trouve soit dans la colonne D, soit dans la colonne I, et que l'ensemble des tableaux fini avant la ligne 5001.

La fonction personnalisée NumeroPage, proposée par Laurent Longre et trouvée sur le net, détaillé dans un module, renvoie le n° de la page contenant A62.


Cela fonctionne, mais c'est très lent sur mon ordinateur (une dizaine de secondes juste pour 4 valeurs !!!!). Je regarde si je ne peux pas trouver une astuce pour que cela tourne plus vite.

@ plus

Merci CISCO pour ta réponse, je vais regarder cela ce weekend car là je n'ai pas du tout le temps ^^
J'ai juste téléchargé le fichier que tu as joints, mais dans les cellules ou tu as mis la formule j'ai " #VALEUR!"

je me pencherai dessus ce week end

Merci, je te tiens au courant :)
 

CISCO

XLDnaute Barbatruc
Re : Numéro de page d'une valeur

Bonjour

Chez moi, cela fonctionne, mais c'est vraiment long, et comme je n'y connais pas grand chose en VBA.

Voilà le code de la macro
Function NumeroPage(Cellule As Range) As Integer
'L Longre, mpfe

Dim VPC As Integer, HPC As Integer
Dim VPB As VPageBreak, HPB As HPageBreak
Dim Wksht As Worksheet
Dim Col As Integer, Ligne As Long

Application.Volatile

Set Wksht = Cellule.Worksheet
Ligne = Cellule.Row
Col = Cellule.Column
If Wksht.PageSetup.Order = xlDownThenOver Then
HPC = Wksht.HPageBreaks.Count + 1
VPC = 1
Else
VPC = Wksht.VPageBreaks.Count + 1
HPC = 1
End If
NumeroPage = 1
For Each VPB In Wksht.VPageBreaks
If VPB.Location.Column > Col Then Exit For
NumeroPage = NumeroPage + HPC
Next VPB
For Each HPB In Wksht.HPageBreaks
If HPB.Location.Row > Ligne Then Exit For
NumeroPage = NumeroPage + VPC
Next HPB

End Function


Si je comprend bien, la macro compte le nombre de fin de page.

J'ai cherché sur le net, mais c'est à chaque fois cette macro, de Laurent Longre, qui est proposée. Et comme le site de L. Longre, et celui de Misange, Excelabo, qui avait pris le relais, ont été piratés, je ne peux pas fouiller à "l'origine", pour voir s'il y a mieux maintenant. Si un de nos chers VBAistes pouvait se pencher sur le pb... Merci d'avance.

@ plus
 
Dernière édition:

MikaTI

XLDnaute Junior
Re : Numéro de page d'une valeur

Bonjour

Je viens de tester sur un autre ordi, plus récent. Ca tourne beaucoup plus vite.

@ plus

Bonjour Cisco,

Je viens de finir de tester tout ça, ça l'air d'être ok, et il n'y pas l'air d'avoir trop de soucis de lenteur...

Maintenant, est ce que je peux grâce à un module, insérer cette fameuse formule automatiquement dans les cellules? En prenant en compte évidemment le changement de ligne à chaque fois....

Je me permets de remettre le fichier à jour, car je l'ai un peu modifié (nombre de colonne surtout)
J'explique mon besoin dedans...

Merci bien
 

Pièces jointes

  • Test classeur MIKATI.xlsm
    67.3 KB · Affichages: 30
  • Test classeur MIKATI.xlsm
    67.3 KB · Affichages: 35

Statistiques des forums

Discussions
312 370
Messages
2 087 693
Membres
103 641
dernier inscrit
anouarkecita2