Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recopie de cellules selon leur adresse relative

11 réponses
Avatar
Indigo
Bonjour à tous.

Il 'agit d'automatiser une feuille de résumé.

CONTEXTE :

Il y a environ une vingtaine d'articles différents et il peut y en avoir
entre 1 et 30 en général, rarement plus et exeptionnellement jusqu'à 40.

On utilise 2 feuilles principales : MOUVEMENT et RÉSUMÉ.
--
Sur une feuille MOUVEMENT chacun des articles occupe 5 colonnes au fur et à
mesure des saisies jusqu'à un maximum théorique de 3 000 lignes, en réalité
plus proche des 1 000. En haut de chacune de ces colonnes, pour chacun de ces
articles
sont calculées des synthèses de situation.

Pour le premier, ces synthèses seront en B3:F3.
Pour le second, ces synthèses seront en G3:K3.
Pour le troisième, ces synthèses seront sur L3:P3.
etc.
--
Sur une feuille RÉSUMÉ on souhaite avoir une vue synthétique de toutes ces
synthèse. On les met donc en colonne de façon à les avoir toutes les unes
sous les autres dans la zone E16:X30 sachant que cette zone peut s'étendre si
le besoin s'en fait sentir, c'est à dire s'il y a un nouvel article qui vient
ajouter ses 5 colonnes dans la feuille MOUVEMENT.

Ainsi sur RÉSUMÉ :
En E16:E30 on aura la recopie des cellules B3, G3, L3, Q3,..
En F16:F30 on va de même recopier les cellules C3, H3, M3, R3,...
En G3:G30 on va de même recopier les cellules D3, I3, N3, S3,...

Il s'agit d'obtenir une formule qui permette d'automatiser ces recopies. Il
faut déduire en E17 qu'il s'agit de recopier le contenu de MOUVEMENT!G3 après
avoir recopié le contenu de MOUVEMENT!B3 en E16. De déduire en E18 qu'il
s'agit de recopier le contenu de MOUVEMENT!L3 après avoir recopié le contenu
de MOUVEMENT!G3 en E17. De déduire en E19 qu'il s'agit de recopier le contenu
de MOUVEMENT!Q3 après avoir recopié le contenu de MOUVEMENT!L3 en E18. etc.

Comment faire?

Merci à tous.

10 réponses

1 2
Avatar
isabelle
bonjour Indigo,

pour la cellule E16
­RESSE(3;LIGNE()/0.2-78)
ce qui renvoie la cellule B3
utilise Indirect pour avoir son contenu
=INDIRECT(ADRESSE(3;LIGNE()/0.2-78))

pour les autres colonnes
il faut diminuer le chiffre 78 de 1 à chaque colonne
pour la cellule F16
=INDIRECT(ADRESSE(3;LIGNE()/0.2-77))

isabelle


Bonjour à tous.

Il 'agit d'automatiser une feuille de résumé.

CONTEXTE :

Il y a environ une vingtaine d'articles différents et il peut y en avoir
entre 1 et 30 en général, rarement plus et exeptionnellement jusqu'à 40.

On utilise 2 feuilles principales : MOUVEMENT et RÉSUMÉ.
--
Sur une feuille MOUVEMENT chacun des articles occupe 5 colonnes au fur et à
mesure des saisies jusqu'à un maximum théorique de 3 000 lignes, en réalité
plus proche des 1 000. En haut de chacune de ces colonnes, pour chacun de ces
articles
sont calculées des synthèses de situation.

Pour le premier, ces synthèses seront en B3:F3.
Pour le second, ces synthèses seront en G3:K3.
Pour le troisième, ces synthèses seront sur L3:P3.
etc.
--
Sur une feuille RÉSUMÉ on souhaite avoir une vue synthétique de toutes ces
synthèse. On les met donc en colonne de façon à les avoir toutes les unes
sous les autres dans la zone E16:X30 sachant que cette zone peut s'étendre si
le besoin s'en fait sentir, c'est à dire s'il y a un nouvel article qui vient
ajouter ses 5 colonnes dans la feuille MOUVEMENT.

Ainsi sur RÉSUMÉ :
En E16:E30 on aura la recopie des cellules B3, G3, L3, Q3,..
En F16:F30 on va de même recopier les cellules C3, H3, M3, R3,...
En G3:G30 on va de même recopier les cellules D3, I3, N3, S3,...

Il s'agit d'obtenir une formule qui permette d'automatiser ces recopies. Il
faut déduire en E17 qu'il s'agit de recopier le contenu de MOUVEMENT!G3 après
avoir recopié le contenu de MOUVEMENT!B3 en E16. De déduire en E18 qu'il
s'agit de recopier le contenu de MOUVEMENT!L3 après avoir recopié le contenu
de MOUVEMENT!G3 en E17. De déduire en E19 qu'il s'agit de recopier le contenu
de MOUVEMENT!Q3 après avoir recopié le contenu de MOUVEMENT!L3 en E18. etc.

Comment faire?

Merci à tous.


Avatar
Indigo
Merci beaucoup Isabelle.

Pour être complet si on veut par exemple accéder à la cellule $C$2 de la
feuille MOUVEMENT la formule est donc :
=INDIRECT("Mouvement!"&­RESSE(2;LIGNE()*5-82)) avec 85*5 si on débute
les calculs en E17.

(Je préfère utiliser le produit x5 (pour 5 colonnes) plutôt que la division
/0.2 qui ne fonctionnerait pas avec 0.3 par exemple pas si on n'avait que 3
colonnes)
Avatar
Indigo
Problème inverse.

Sur la feuille RÉSUMÉ j'ai une suite de nom de A17 à A65. Je voudrais que
soit recopié automatiquement de la même façon les noms 1 par 1 dans la
feuille MOUVEMENTS
1° nom en B1
2° nom en G1
3° nom en L1
etc.

De façon à pouvoir faire un coupé-collé d'une zone de 5 colonnes dès lors
que j'ai un nouveau produit à ajouter. Je souhaite ne pas avoir à retourner
sur chacune des cellules pour devoire écrire par exemple sur la cellule B1 la
formule = Résumé!E17.
Avatar
Indigo
Problème inverse.


C'est :
=INDIRECT("Résumé!"&ADRESSE(COLONNE()/5+17;1))

Il ne me reste plus qu'à remplacer les chaînes "Résumé!" et "Mouvement!" par
un nom relatif de façon à ce qu'on puisse changer le nom de ces feuilles sans
perturber pour autant les calculs.

Comment faire ?

Avatar
isabelle
bonjour Indigo,

Merci beaucoup Isabelle.

Pour être complet si on veut par exemple accéder à la cellule $C$2 de la
feuille MOUVEMENT la formule est donc :
=INDIRECT("Mouvement!"&­RESSE(2;LIGNE()*5-82)) avec 85*5 si on débute
les calculs en E17.

(Je préfère utiliser le produit x5 (pour 5 colonnes) plutôt que la division
/0.2 qui ne fonctionnerait pas avec 0.3 par exemple pas si on n'avait que 3
colonnes)


oui c'est bien ça, LIGNE()*5 pour le pas de cinq
et -82 (surplus à enlever) qui sera variable selon à quel colonne on commence.

isabelle

Avatar
isabelle
c'est le même principe,

=INDIRECT(ADRESSE(COLONNE()/5+17;1))

isabelle


Problème inverse.

Sur la feuille RÉSUMÉ j'ai une suite de nom de A17 à A65. Je voudrais que
soit recopié automatiquement de la même façon les noms 1 par 1 dans la
feuille MOUVEMENTS
1° nom en B1
2° nom en G1
3° nom en L1
etc.

De façon à pouvoir faire un coupé-collé d'une zone de 5 colonnes dès lors
que j'ai un nouveau produit à ajouter. Je souhaite ne pas avoir à retourner
sur chacune des cellules pour devoire écrire par exemple sur la cellule B1 la
formule = Résumé!E17.


Avatar
isabelle


Il ne me reste plus qu'à remplacer les chaînes "Résumé!" et "Mouvement!" par
un nom relatif de façon à ce qu'on puisse changer le nom de ces feuilles sans
perturber pour autant les calculs.

Comment faire ?


si tu change le nom de feuille cela se répercutera dans la formulle automatiquement.
à moin que la formulle ne soit pas déjà écrit à ce moment la.

isabelle

Avatar
Indigo
si tu change le nom de feuille cela se répercutera dans la formulle
automatiquement.

à moin que la formulle ne soit pas déjà écrit à ce moment la.


Pas avec ce type de formule :
=INDIRECT("Mouvement!"&­RESSE(2;LIGNE()*5-82)) puisqu'il s'agit ici d'un
texte brut. Par quoi remplacer la chaîne "Mouvement!" pour ne plus dépendre
du nom de la feuille si elle venait à changer de nom ?

Avatar
isabelle
je ne vois pas d'autre solution qu'une fonction perso utilisant le numéro codename,

Function feuille(numéro As Integer)
Application.Volatile
For Each f In ActiveWorkbook.Sheets
If f.CodeName = "Feuil" & numéro Then feuille = f.Name
Next
End Function

isabelle


si tu change le nom de feuille cela se répercutera dans la formulle


automatiquement.

à moin que la formulle ne soit pas déjà écrit à ce moment la.



Pas avec ce type de formule :
=INDIRECT("Mouvement!"&­RESSE(2;LIGNE()*5-82)) puisqu'il s'agit ici d'un
texte brut. Par quoi remplacer la chaîne "Mouvement!" pour ne plus dépendre
du nom de la feuille si elle venait à changer de nom ?



Avatar
Indigo

je ne vois pas d'autre solution qu'une fonction perso utilisant le numéro codename,

Function feuille(numéro As Integer)
Application.Volatile
For Each f In ActiveWorkbook.Sheets
If f.CodeName = "Feuil" & numéro Then feuille = f.Name
Next
End Function


Merci à toi Isabelle. Une fois de plus.

1 2