Copier formule avec decaler

Bonjour à tous

J'aimerais copier une formule de gauche a droite sur la même ligne avec la fonction décaler voici la formule (car bcp de ligne a coller)

=SI(TRANSPOSE(Data!D22)=0;"";TRANSPOSE(Data!D22))

Cette formule transpose le contenu d'une cellule de la feuille Data

Et voudrais savoir si il y a un moyen d'obtenir le même résultat en passant par le VBA dans un truc comme ça que je ne comprend pas et qui dois être faux.

Private Sub Worksheet_Activate()
Worksheets("Feuil1").Cells(1, 1).Value = Worksheets("Data").Cells(1, 1).Value
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Worksheets("Feuil1").Cells(1, 1).Value = Worksheets("Data").Cells(1, 1).Value

Merci de vôtre aide

Bonsoir,

il y a incohérence dans votre demande :

J'aimerais copier une formule de gauche a droite sur la même ligne avec la fonction décaler

et

voici la formule (car bcp de ligne a coller)

Un fichier avec une feuille et la formule ainsi que la zone de "recopie" pourrait nous aider à résoudre le problème

@ bientôt

LouReeD

Ok les deux premiers tableau sont OK, et j'en est comme ça plusieurs a remplir avec la même formule. En sachant qu'il y a une incrémentation de 20 dans un sens (colonne) de ligne bleu a bleu ou de mauve a mauve et une incrémentation vers la gauche

34classeur.zip (84.84 Ko)

Re

modification des formules afin quelles soient "transposables".

Attention ! la présentation doit être la même pour que les instruction INDIRECT fonctionnent.

INDIRECT a deux fonctionnements : en référence de type A1 (paramètre à VRAI) ou en référence de type L1C1 (paramètre à FAUX)

Pour la première formule DATE!B2, il a suffit de remplacer le 2 par le n° de colonne où se trouve la formule en enlevant 1 pour avoir 2

=> colonne C = 3 => 3-1 = 2 donc INDIRECT("DATA!B"&COLONNE()-1)

Le soucis avec cette formule est quand on la recopie sur le deuxième tableau, il n'y a pas le décalage de 20 car le deuxième tableau on a DATA!B22

Il faut donc ajouter 20, mais ensuite 40 et surtout 0 pour le premier tableau.

La solution est de calculer 20 en fonction du n° de ligne où se trouve la formule

Premier tableau la formule est en ligne 6, le deuxième tableau est en ligne 11, le suivant en ligne 16...

Dénominateur commun =>5 et pour un décalage de 20 on x par 4, donc

(ligne()-6) x 4 => (6-6) x 4 = 0 pour la première formule et pour cette même formule du tableau du dessous :

(11-6)x 4 = 20 !!!

CQFD

L'autre façon d'utiliser INDIRECT est avec L1C1, c'est ce que j'ai fait avec la formule du milieu :

car en C7 on test la formule en D6 c'est à dire une ligne de moins mais une colonne de plus donc on a D6 par rapport a C7 avec INDIRECT => L(-1)C(+1) => INDIRECT("L"&ligne()-1&"C"&colonne()+1;FAUX)

pour le troisième formule du tableau c'est la même que la première sauf qu'il faut soustraire 8 à la ligne et non pas 6 :

(ligne()-8) x 4 = > (8-8) x 4 = 0 pour le premier tableau

(13-8) x 4 = 20 pour le deuxième tableau, on retrouve l'incrémentation de 20 !

Ou simplement voir le fichier joint :

@ bientôt

LouReeD

Ok merci bcp je vais tester ça car si les tableau ne sont pas on même endroit ça change tout, donc va falloir que je comprenne la formule.


Par contre il a tendance a arrondir par exemple 19,9 ça donne 20 si je met une décimal c'est bon mais un chiffre rond donnera 85,0 au lieu de 85

Edit: ce sont mes colonnes pas assez large ça arrondi

Bonjour,

Si vous avez besoin d'explication sur INDIRECT n'hésitez pas ! Elle est devenue ma spécialité !!! Je plaisante.

@ bientôt

LouReeD

Bonjour à tous!

Après avoir écumé pas mal de sites, je n'arrive pas à résoudre un problème. C'est la première fois que je m'inscris à un site et je fait mes débuts sur Excel,donc il se peut que je n'utilise pas toujours le bon vocabulaire...

Je cherche à préparer un classeur comportant différentes feuilles pour un match de foot.

Une feuille MATCH, dans laquelle les cellules, qui comporteront les noms des joueurs, font appel à la formule INDIRECT pour récupérer l'identité des joueurs de chaque équipe dans leur feuilles respectives (Feuille Caen, Feuille Rennes...)

J'ai ajouté le fichier en pièce jointe.

Je n'arrive pas à incrémenter cette formule lorsque je la glisse vers le bas. Je sais qu'il y a une histoire de valeur absolue avec $ mais la cellule G4 doit être la même. C'est les cellules C2,C3,C4... des feuilles de chaque équipe que j'aimerais changer.

C'est dur d'être clair, mais j'avoue que lorsqu'on débute cela fait surchauffer les méninges!

La formule : =SI(ESTVIDE(INDIRECT($G$4&"!C2"));"";INDIRECT($G$4&"!C2"))

Merci d'avance!

Bises

Fanny

15essai-fanny.zip (14.08 Ko)

Bonjour,

pour commencer l'idéale est d'ouvrir un nouveau post avec votre question, car ce post est "résolu" du coup personne regarde...

Sauf moi !

Indirect le change pas les valeurs inscrites entre guillemet donc

INDIRECT($G$4&"!C2) ne va pas s'incrémenter automatiquement en glissant la formule vers le bas car le C2 est considéré comme du texte donc sur chaque formule il y aura C2.

Si le 2 doit s'incrémenter alors il faut le sortir du "texte" entre guillemet :

INDIRECT($G$4&"!C"&2)

une fois ceci fait il faut faire "varier" le 2 en fonction de ce que l'on veut , dans votre exemple vous "tirez" la formule vers le bas, ce qui varie c'est le numéro de ligne où se trouvent les formules donc:

INDIRECT($G$4&"!C"&LIGNE())

si votre première formule se trouve en ligne 10 et que vous voulez la cellule C2, ligne est plus grand que 2 de 8 donc:

INDIRECT($G$4&"!C"&LIGNE()-8), on aura en résultat C2

Cette formule tirée vers le bas donnera

INDIRECT($G$4&"!C"&LIGNE()-8)

mais comme ligne vaudra 11 le résultat sera C3

Voilà,

@ bientôt sur un post qui vous appartiendra à l'avenir

LouReeD

Bonjour!!! LooReeD!!

Un grand merci! c'est clair et efficace!!! Il est possible que je te sollicite de temps à autre!

Bonne journée!

Fanny

Merci pour votre merci !

@ bientôt

LouReeD avec un U !

Rechercher des sujets similaires à "copier formule decaler"