Déplacement de ligne dans calc

Bonjour

Voici une nouvelle question envoyée à l'aide du formulaire de demande d'aide (http://fr.libreoffice.org/get-help/poser-une-question/).
Si vous répondez, merci de penser à utiliser la fonction "répondre à tous" de votre logiciel de courrier électronique de façon que le demandeur reçoive une copie de votre réponse.

Email:: mir7660rim@gmail.com
Sujet:: Déplacement de ligne dans calc
OS:: Windows 10
Version:: 6.1.x
Question:: Bonjour,

Voici ma problématique. J'ai un fichier calc dans lequel se trouve deux feuilles.
Dans la première feuille j'ai un tableau de 5 colonnes. Les informations que je rentre se copie automatiquement dans un autre tableau dans la deuxième feuille.
J'ai créer une macro pour trier toutes les lignes par date dans la première feuille.
Mon soucis est que si je change la date d'une ligne dans le premier tableau et que j'exécute la macro, la ligne se déplace au bon endroit. Mais dans mon deuxième tableau du coup il reprends les données qui se trouve à l'ancien
emplacement de cette fameuse ligne. Logique vu que pour copier les données automatiquement j'ai mis cette formule : =$nomdelafeuille.B3 pour l'exemple.
Donc si ma ligne ou se trouve B3 est changé du au faite que sa date change, les données ne suivent pas. Par exemple si la ligne passe de 3 à 7 ma formule ne se change pas en =$nomdelafeuille.B7 mais reste en =$nomdelafeuille.B3.

J'aurais donc voulu savoir si il y avait un moyen de remédier à cela.

Merci d'avance pour vos réponses.

Romain

Bonsoir,

OS:: Windows 10
Version:: 6.1.x
Question:: Bonjour,

Voici ma problématique. J'ai un fichier calc dans lequel se trouve deux feuilles.
Dans la première feuille j'ai un tableau de 5 colonnes. Les informations que je rentre se copie automatiquement dans un autre tableau dans la deuxième feuille.
J'ai créer une macro pour trier toutes les lignes par date dans la première feuille.
Mon soucis est que si je change la date d'une ligne dans le premier tableau et que j'exécute la macro, la ligne se déplace au bon endroit. Mais dans mon deuxième tableau du coup il reprends les données qui se trouve à l'ancien
emplacement de cette fameuse ligne. Logique vu que pour copier les données automatiquement j'ai mis cette formule : =$nomdelafeuille.B3 pour l'exemple.
Donc si ma ligne ou se trouve B3 est changé du au faite que sa date change, les données ne suivent pas. Par exemple si la ligne passe de 3 à 7 ma formule ne se change pas en =$nomdelafeuille.B7 mais reste en =$nomdelafeuille.B3.

J'aurais donc voulu savoir si il y avait un moyen de remédier à cela.

réponse courte : oui.

Réponse plus longue : utilisez ce qui se fait en bases de données, c'est-à-dire des colonnes contenant un identifiant unique (ID).

Dans la feuille1, ajoutez, à gauche (col. A), une colonne d'identifiants (des numéros de 1 à ...) Ces numéros sont arbitraires et n'ont pas d'autre usage que de permettre de repérer une ligne de manière unique.

Dans la feuille2, faites de même (ajoutez les identifiants "en dur", pas de formule "=").

Dans la feuille2, remplacez vos formules "= Ax" par
(exemple pour la ligne 2, colonne B de Feuille2)

= RECHERCHEV(A2;$Feuille1.$A$2:$C$11;2;0)

où :

A2 : la cellule de Feuille2 qui contient l'identifiant

$Feuille1.$A$2:$C$11 : la plage de la feuille1 qui contient les données référencées par Feuille2 (les ID sont en colonne A). Notez les références absolues.

2 : le numéro de la colonne dans la plage, pour laquelle on veut la donnée (donc ici colonne B de Feuille1)

0 : la colonne A de Feuille1 n'est pas triée

Vous pouvez maintenant trier Feuille1 (ou Feuille2 d'ailleurs), en toute quiétude (/!\ les deux colonnes d'identifiants doivent faire partie de la plage triée).

Si vous répondez, merci de penser à utiliser la fonction "répondre à tous" de votre logiciel de courrier électronique de façon que la liste reçoive une copie de votre réponse.

Bien cordialement,

Remarque

Les formules utilisant RECHERCHEV() sont plus lourdes que des "=". Suivant la taille de vos feuilles ça peut ralentir fortement les traitements.

Si vous répondez, merci de penser à utiliser la fonction "répondre à tous" de votre logiciel de courrier électronique de façon que la liste reçoive une copie de votre réponse.

Bien cordialement,