[help] Aide sous Excel: données de feuils vers cellules

Aide sous Excel: données de feuils vers cellules [help] - Logiciels - Windows & Software

Marsh Posté le 07-12-2006 à 09:42:53    

Voila je voudrais donc quelques méthodes pour un petit travail sous excel
 
Le fichier comprend des formules simples: sommes, comparaisons de totaux sous graphique.
 
Là ou je suis coincé:
Plusieurs feuilles ( beacoup de feuilles ).Un exemple: un nom sur chaque feuille, si je veux que ces nom (toujours dans la meme case de chaque feuille) apparaisent en ligne ou en colone sur une feuille de récapitulation, de même pour des case chiffrés, comment fait t'on.
 
Merci.


Message édité par docdino le 07-12-2006 à 11:20:22
Reply

Marsh Posté le 07-12-2006 à 09:42:53   

Reply

Marsh Posté le 07-12-2006 à 09:51:12    

Tu peux utiliser la fonction VBA Worksheet(x).name je pense.. en faisant varier x

Reply

Marsh Posté le 07-12-2006 à 10:13:36    

Peut tu donner un exemple de formule complet?

Reply

Marsh Posté le 07-12-2006 à 10:52:54    

Reply

Marsh Posté le 07-12-2006 à 12:00:38    

?

Reply

Marsh Posté le 07-12-2006 à 12:20:45    


 
 :hello:  docdino.
 
Pour ton problème, il y a plusieurs solutions dont celles-ci :
1. Tu vas lier chaque cellule qui doit contenir les valeurs de la cellule de chaque page avec cette cellule ! Dur dur, comme tu dois bien t'en rendre compte  :pt1cable:  
 
2. Plus pratique : un peu de code VBA.
- Tu vas dans l'éditeur VBA Alt+F11 ou bien Menu "Outils/Macro/Visual Basic Editor".
- Une fois dans l'éditeur, tu trouves sur la gauche une fenêtre avec l'arborescence de ton classeur.
- Tu double-cliques sur le nom de la feuille où tu veux créer ta liste.
- Tu vois apparaitre dans la grande fenêtre de droite une page blanche. C'est la zone d'édition de VBA POUR CETTE FEUILLE-LA.
- Tu y recopies ce code :
 
Sub ListerCellA1()
Dim J
 
For J = 1 To ThisWorkbook.Sheets.Count
 ThisWorkbook.Sheets(1).Cells(J, 2) = ThisWorkbook.Sheets(J).Cells(1, 1)
Next J
 
End Sub

 
Ce code va lire chacune de tes feuilles (avec comme limite 65535 feuilles seulement  :pt1cable: ) puis il va récupérer le contenu de la cellule "A1" :
 ThisWorkbook.Sheets(J).Cells(1, 1)  
et il va aller l'écrire dans la cellule ... (suis moi bien !) dont le numéro de ligne correspond au numéro d'index de la feuille lue :
ThisWorkbook.Sheets(1).Cells(J, 2).
 
Bien entendu, tu peux adapter facilement ce code à tes besoins :
 ThisWorkbook.Sheets(J).Cells(1, 1) ==> Cells(1,1) =  cellule A1 donc tu lis la cellule A1, si tu veux lire la cellule C1, tu remplaces Cells(1,1) par Cells(3,1) car les paramètres de cette instruction sont : Cells(Numéro de Ligne, Numéro de Colonne).
 
ThisWorkbook.Sheets(1).Cells(J, 2) ==> Tu places la valeur lue dans la cellule qui se trouve à la ligne "J" et à la colonne 1.
Donc pour la première feuille, tu lis la cellule A1 et tu écris la valeur dans la Cellule A1 de la première feuille; pour la valeur lue dans la seconde feuille, tu écris la valeur dans la cellule J (qui vaut 2 maintenant), dans la colonne 1; etc. jusqu'à ce que toutes tes feuilles soient lues.
 
Si dans une de tes feuilles, la cellule A1 est vide, tu auras une cellule vide dans ta liste.
 
Maintenant, si tu veux créer une liste sur une ligne et non plus sur une colonne, il te suffit d'inverser J et 1 dans la partie :
ThisWorkbook.Sheets(1).Cells(J, 2) qui devient :
ThisWorkbook.Sheets(1).Cells(2, J).
 
C'est simple, non ? :pt1cable:  
 
Pour lancer cette procédure, tu vas dans la feuille Excel puis tu sélectionnes "Outils/Macros" et dans la liste des macros qui s'affiche, tu lances celle-ci :Macro:ListerCellA1().
 
J'espère t'avoir aidé  :jap:  
 
A+ :hello:


Message édité par Papy Octet le 07-12-2006 à 14:15:57
Reply

Marsh Posté le 07-12-2006 à 12:24:22    

Bonjour,
j'ai lu ton post et je ne comprends pas:  un nom sur chaque feuille?
 
c'est : chaque feuille porte un nom que l'on voit dans son onglet en bas? et tu veux récupèrer ce nom ?
          chaque feuille à, dans une cellule bien définie ( si oui, laquelle?),une valeur (numérique ou string) et tu veux récupèrer cette valeur?
Cordialement
 
Après validation je viens de lire la réponse de papy octet qui doit correspondre à ta demande

Message cité 1 fois
Message édité par seniorpapou le 07-12-2006 à 12:26:42
Reply

Marsh Posté le 07-12-2006 à 13:54:19    

oué, désolé, je bossais... bon la réponse donnée est ce que j'aurais dit... enfin, en mieux :)

Reply

Marsh Posté le 07-12-2006 à 14:13:02    

seniorpapou a écrit :

Bonjour,
j'ai lu ton post et je ne comprends pas:  un nom sur chaque feuille?
 
c'est : chaque feuille porte un nom que l'on voit dans son onglet en bas? et tu veux récupèrer ce nom ?
          chaque feuille à, dans une cellule bien définie ( si oui, laquelle?),une valeur (numérique ou string) et tu veux récupèrer cette valeur?
Cordialement
 
Après validation je viens de lire la réponse de papy octet qui doit correspondre à ta demande


 
Première question : Chaque feuille de ton classeur est nommée (onglet du bas dans le classeur Excel). Quand tu vas dans l'éditeur VBA, tu retrouves la liste des feuilles (leurs noms) dans la fenêtre de gauche de l'éditeur VBA.
Mais tu n'as pas besoin de récupérer ces noms puisque mon petit programme travaille avec le numéro d'index de chaque feuille.
J'explique : pour Excel, chaque feuille d'un classeur possède un numéro d'ordre, l'index qui est unique pour chaque feuille qui commence au 1 et s'incrémente de 1 à chaque nouvelle feuille : la 2° feuille a l'index 2, la 3° l'index 3, etc.
Si j'ai utilisé l'index, c'est piour ne pas devoir effectuer un comptage des feuilles pour déterminer la ligne sur laquelle on va inscrire la valeur lue dans la cellule.
 
Qustion 2 : la récupération du contenu de la cellule de chaque feuille se fait automatiquement dans la boucle For, sans tenir compte du contenu de celle-ci.
J'ai sous-entendu que le format de la cellule est "Standard", ce qui lui permet de recevoir aussi bien du texte que des nombres. Si ce n'est pas le cas, il faut soit modifier le format des cellules de la colonne qui recevra la liste des valeurs, soit introduire dans le code le formatage de la cellule avant d'y inscrire quoique ce soit.
La définition du numéro de cellule d'où on extrait les données doit être définie par l'utilisateur et, dans le cas présent, ce devra être LA MEME CELLULE DANS CHACUNE DES FEUILLES du classeur !

Reply

Marsh Posté le 07-12-2006 à 14:15:21    

merci pour votre soutient, j' essai maintenant

Reply

Marsh Posté le 07-12-2006 à 14:15:21   

Reply

Marsh Posté le 07-12-2006 à 14:20:27    

j'avoue quand même que je ne vois pas trop trop l'intérêt de lister le nom des feuilles excel dans chacune des feuilles excel... ? tu peux nous expliquer ? (peut être que ce que tu veux faire peut être fait autrement de manière moins tordue et aussi pratique)

Reply

Marsh Posté le 07-12-2006 à 14:25:24    

BettaSplendens a écrit :

j'avoue quand même que je ne vois pas trop trop l'intérêt de lister le nom des feuilles excel dans chacune des feuilles excel... ? tu peux nous expliquer ? (peut être que ce que tu veux faire peut être fait autrement de manière moins tordue et aussi pratique)


 
Je crois que tu n'as pas bien compris : il veut récupérer la valeur contenue dans une cellule qui se trouve au même emplacement dans chacune des feuilles de son classeur, par exemple, il se trouve le nom d'un animal dans chaque cellule A1 de chaque feuille du classeur et notre ami veut en dresser la liste dans une feuille du classeur.
 
C'est ce que mon programme fait : il va lire la cellule A1 de chaque feuille et inscrit la valeur qu'il y a trouvée dans une cellule de la première feuille du classeur pour en faire une liste.
 
Je ne crois pas que c'est la liste des noms des feuilles qu'il veut récupérer.
 
A+

Reply

Marsh Posté le 07-12-2006 à 14:29:17    

ah... ok...
 
pour moi, il faudrait qu'il raisonne à l'inverse alors... avec une feuille "source" où il trouvera la liste des valeurs qu'il utilise (des noms d'élève par exemple)...  
et dans chacune de ses feuilles, il fait alors référence à un indice de cette liste...
 
enfin, ça me parait être le plus propre, et au final le plus proche d'une BDD

Reply

Marsh Posté le 07-12-2006 à 14:34:52    

Là, je suis d'accord avec toi, mais rien ne dit ce qu'il veut faire avec sa liste de valeur ! Il a peut-être simplement besoin d'avoir la liste pour l'imprimer tout simplement.

Reply

Marsh Posté le 07-12-2006 à 14:58:06    

c bien ça le pb... il nous en dit pas bcp... ;)

Reply

Marsh Posté le 07-12-2006 à 15:00:55    

Bonsoir Papy Octet,
 
mon post de 12h24 posait des questions à Docdino et non pas à toi. lol
 
Néanmoins tes explications sont très claires j'aimerais pouvoir en faire autant.
Cordialement

Reply

Marsh Posté le 07-12-2006 à 17:06:34    

Sur un fichier test ça marche, sur le vrai fichier ça ne fonctionne pas. Je vais essayer à nouveau.

Reply

Marsh Posté le 07-12-2006 à 17:12:32    

vérifie via VBA les indices de tes feuilles... je suis pas sûr qu'il les renumérote
(en gros, si tu as supprimé la feuille 2, il te reste la feuille 1 et la feuille 3 (indice 1 et 3)... enfin, à vérifier !)

Reply

Marsh Posté le 07-12-2006 à 17:24:26    

La feuille de récapitulation doit etre premier dans l' indexe pour que ça fonctionne, je doit pouvoir me débrouiller maintenant, encore MERCI.
Est-il possible (sans trop de complication) d' exclure une des feuilles qui sert pour des tableaux intermédiaires.

Reply

Marsh Posté le 07-12-2006 à 17:51:12    

Encore une chose, j' ai besoin que ce récapitulatif se mette à jour, il y a t il une meilleure solution qu' un lien hypertexte vers les macros?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed