| ||||||||
Astucien | Bonjour,
cherchant à réaliser une macro "manuelle" rudimentaire et concernant quasi-exclusivement la mise en forme, je bute sur un problème de fin de tableau et de somme. En fait, ce tableau présente une série de colonnes avec des critères, et pour chacun d'entre eux, il y a soit 1 soit rien dans les cellules. Le tableau est évolutif, chaque jour il compte un nombre supplémentaire et imprévisible de lignes, mais tjs avec les mêmes types de données. Le nbre de colonnes est définitivement fixe : AX. La macro doit agir de manière uniforme sur ces tableaux. Admettons qu'au jour j, le tableau fasse 50 lignes. Desription de l'enregistrement de la macro : Je me positionne sur la cellule A1, j'appuie sur CTRL + FIN, ce qui amène le curseur à la cellule AY:50. Ensuite j'appuie sur la touche "Origin" (ou "début" selon le clavier), ce qui ramène à la position A50. Enfin j'appuie sur la flèche "bas" et on est sur A51, soit la (dernière + 1) ligne. L'objectif à ce stade, est de calculer la somme des données de la colonne A (incluant donc des 1 ou des cellules vides) : somme (A2:A50). Une fois ce total calculé, je sélectionne la cellule A51 et la prolonge jusqu'à la cellule AX:51 de sorte à ce que chaque colonne ait son total. Et c'est là que ça ne va pas, car je n'arrive pas à faire le choix de la plage de données autrement qu'en sélectionnant la dernière ligne jusqu'à la deuxième (la première étant les titres) ; du coup la macro enregistre la plage A2:A50 Si j'essaye d'exécuter cette macro sur un tableau au jour j+2 par exemple, il calculera la somme pour la même plage alors que le tableau aura un nbre de lignes supérieur à 50. Et de plus le total sera inséré anarchiquement à la ligne 51 dans un tableau comportant plus de 51 lignes. Je ne sais pas si j'ai été assez clair dans la description, mais l'idée est là : trouver une astuce pour rejoindre la dernière ligne d'un tableau Il est inutile de vous préciser que je ne sais pas programmer de macro, donc s'il y a moyen d'échapper à cette contrainte c'est un plus.
Merci | |||||||
Publicité | ||||||||
| ||||||||
Astucien ![]() |
J'avoue ne pas avoir bien compris. Un exemple serait plus parlant. Je te donne deux pistes : Pour ce qui me concerne, lorsque je veux effectuer le total d'une colonne à nombre de lignes variables, j'utilise la formule suivante : Si le total s'effectue sur la même feuille : =SOMME(A2:A65536) Si le total s'effectue sur une feuille différente : =SOMME(nom de la feuille.A2:A65536) Si tu veux récupérer la valeur de la dernière cellule d'une colonne : =INDEX(nom de la feuille.A2:A65536;NB(nom de la feuille.A2:A65536);1);
65536 est le nombre maximum de lignes que peut accepter une feuille calc. J'espère avoir approché un peu. Sinon tu nous permettras d'y voir un peu plus clair.
Modifié par mjd535 le 28/11/2009 12:24 | |||||||
![]() | Ok merci, alors pour être plus concret, j'ai fait un exemple http://www.cijoint.fr/cjlink.php?file=cj200911/cij5NqbfR0.ods : "données brutes" et "résultat attendu" en deuxième onglet. sur la mise en forme : - centré, milieu - 1ere ligne de titres : orientation 90°, gras - largeur de colonnes "optimale" afin que l'ensemble tienne sur la partie visible, sans avoir à scroller latéralement - fenêtre fixée en C2
Le problème avec la macro : obtenir à la dernière ligne du tableau - sachant qu'elle est inconnue à priori - cette série de totaux en gras avec le titre "Tot" | |||||||
![]() | Par rapport à tes deux pistes, je ne vois pas comment et surtout où insérer la formule en fait cette macro est censée faciliter le travail de lecture de ces chiffres, à la base comme tu peux le voir c'est très étendu et il faut copieusement scroller. D'où l'idée d'insérer ce total juste sur la dernière ligne du tableau Je n'ai pas réussi à tirer qquechose de la valeur de la dernière cellule | |||||||
Petit astucien | bonjour A mon avis il faut partir d'un modèle de feuille avec une ligne entière nommée à laquelle tu pourras faire référence dans une macro. Ensuite tes nouvelles lignes tu les créeras non pas en dessous , mais au dessus de cette ligne nommée qui restera toujours la dernière Une autre solution consiste à rechercher quelle est la première ligne vide . ça sera forcément ta dernière ligne. J'avais employé cette méthode il y a déjà quelques années quand on pouvait faire des macros sous Excel sans le basic. ça fonctionnait bien C'est certainement faisable avec du open office basic , mais là ne compte pas sur moi pour t'aider | |||||||
Astucien ![]() |
Je viens de rentrer, excuse mon silence. J'avoue n'avoir pas très bien compris ton tableau, d'autant plus que je n'ai pas accès aux lignes du haut. Tu ne peux pas effectuer le total en question sur une autre feuille ? Tu pourrais obtenir le total de toute la colonne de la ligne 2 à la ligne x (jusqu'à 35536) quel que soit le nombre de lignes et en évitant de scroller la page. EDIT : Je lis le post de procole (Salut procole). Sa piste amène sur un terrain où je ne peux aller. Trop pointu pour moi. A toutes fins utiles, je te donne l'url DU forum OOo : http://user.services.openoffice.org/fr/forum/index.php?sid=e96297be24581882cee8040224afd047. Ce n'est pas pour botter en touche. Je peux développer ma proposition. Modifié par mjd535 le 29/11/2009 17:56 | |||||||
![]() | OK pour l'idée de procole, mais le souci c'est que la récupération du fichier est automatisée, ainsi que son ouverture (après exécution également automatique de la macro) ; la seule chose que je peux faire en amont c'est la macro puisqu'elle se situe dans le classeur de macros personnelles, et s'appelle indépendamment du contenu de la feuille. | |||||||
|
Les bons plans du moment PC Astuces | Tous les Bons Plans | |||||||||||||||
|