Récupérer des infos d'une feuille et les transférer dans une autre [Résolu]

Signaler
-
 LinDouch42 -
Bonjour,

Je souhaite récupérer des informations de mon fichier de la feuille BaseFacturation et les répercuter dans le tableau de la feuille Récapfacture. Les informations se mettent automatiquement à jour quand je saisie sur la baseFacturation.
La difficulté c'est que les infos sont saisies colonnes après colonnes, et que je souhaite que sce infos soient dans les ligne à la suite (c'est plus compréhensible sur mon fichier ;-))

Merci pour votre aide

https://www.cjoint.com/c/JKnuP1Syikj

Configuration: Windows / Chrome 86.0.4240.198

3 réponses

Messages postés
12833
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
14 novembre 2020
2 062
Bonsoir

Une possibilité :
https://www.cjoint.com/c/JKnxpRMYGLg

Cdlmnt
Via
Bonjjour,

C'est exactement çà. Comment avez-vous fait svp afin de pouvoir refaire en cas de besoin.

Merci
Messages postés
12833
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
14 novembre 2020
2 062
Bonjour

Étudie les formules
Avec INDIRECT je reconstitue une adresse valide dont la lettre de la colonne change à chaque ligne
en code ASCII A vaut 65 , B 66 etc donc avec CAR(65+LIGNE()) on ajoute le n° de la ligne à 65 ainsi en ligne 2 CAR(65+LIGNE()) renvoie CAR (67) soit la lettre C, en ligne 3 ce sera D etc
Merci beaucoup, j'ai essayé d'étudier les formules, mais pour une non experte en excel, c'est du charabia mais toujours intéressant d'apprendre de nouveaux trucs.

J'ai voulu étendre le tableaux pour plus de lignes et copier les formules pour assurer la continuité mais dans les cellules est apparu #REF! . Une idée?

Merci
Messages postés
12833
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
14 novembre 2020
2 062
Je décortique la formule :
=INDIRECT("'Basefacturation '!"&CAR(65+LIGNE())&"4")
CAR(65+LIGNE()) quand la formule est en ligne 5 par ex vaut CAR(65+5) soit CAR(70) équivalent à la lettre F dans le codage ASCII
donc avec la concaténation avec les & l'intérieur de la parenthèse équivaut à
'Basefacturation '!F4
la formule INDIRECT renvoie donc la valeur située en 'Basefacturation '!F4

Pour les REF c'est normal si tu dépasses la colonne Z car après on n'est plus sur une lettre unique mais sur AA, AB etc et 65+LIGNE() vaut 90 équivalent à Z à la ligne 25 ,puis vaut 91 à la ligne 26 qui correspond au signe [

Il faut donc :
-Soit modifier les formules pour tenir compte de ce cas,

- Soit procéder autrement et plus simplement (je ne sais pas pourquoi je n'y ai pensé immédiatement hier !) :
en A2 : =INDEX('Basefacturation '!$4:$4;;LIGNE()+1)
en B2 : =SI($A2=0;"";INDEX('Basefacturation '!$5:$5;;LIGNE()+1))
en C2 : =SI($A2=0;"";INDEX('Basefacturation '!$8:$8;;LIGNE()+1))
en D2 : =SI($A2=0;"";INDEX('Basefacturation '!$6:$6;;LIGNE()+1))
en E2:=SI($A2=0;"";INDEX('Basefacturation '!$7:$7;;LIGNE()+1))
et en F2 : =SI($A2=0;"";INDEX('Basefacturation '!$134:$134;;LIGNE()+1))

et tu peux étirer les formules autant que tu veux

Explication :
INDEX(plage;ligne;colonne) renvoie la valeur de la plage correspondant à la ligne et la colonne précisée
Ici la plage est à chaque fois une plage composée d'une ligne unique (la ligne 4 pour la 1ere formule), on n'indique pas de n° de ligne puisque ligne unique d'où le premier point-virgule sans rien après et un second point-virgule avec ensuite indication du n° de colonne à retourner qui dans notre cas est toujours équivalent à la ligne courante +1 puisque en ligne 2 on doit avoir la valeur de la 3eme colonne C, en ligne 3 celle de D 4eme colonne etc

Cdlmnt
Via

Super, ca fonctionne et effectivement la deuxième méthode est plus simple car il se peut que j'ai des colonnes qui dépasse ZZZ et de nouveau l'erreur ref! (même si tu m'as donné la solution :-))

1000 mercis pour ton aide précieuse.

Cdt