> Tous les forums > Forum Bureautique
 macroSujet résolu
Ajouter un message à la discussion
Pages : Début ... 5 6 [7] 8 9 ... Fin
[Début] Page 7 sur 9 [Fin]
Debrief
 Posté le 19/11/2019 à 09:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

"userform 1 ne répond pas" c'est le message ?

Je ne comprends pas pourquoi ce UserForm se bloque. Je vais faire des tests.

Ça semble être une problème Excel qui se produit lorsque les traitements sont "longs", le UserForm ModeLess ne répond plus ou bien le système considère qu'il ne répond plus.

En effet, si j'ouvre UserForm1 et que je fais une boucle de traitement en Macro qui dépasse 6 secondes, le "UserForm1 ne répond pas".
UserForm1.Show vbModeless
T = Now

For i = 1 To 10000
ActiveSheet.Range("A1") = Format(Now - T, "nn:ss")
Next i

Avec ce code pas de problème de blocage:
UserForm1.Show vbModeless
T = Now

For i = 1 To 10000
ActiveSheet.Range("A1") = Format(Now - T, "nn:ss")
If i Mod 50 = 0 Then DoEvents
Next i

D'ailleurs nul besoin d'occuper la CPU pour rencontrer ce problème. En fait il suffit de ne pas rendre la main à Excel pendant environ 6 secondes:
UserForm1.Show vbModeless
Sleep (10000) 'UserForm Not Responding !!

Personne ne semble avoir de solution lorsque ce problème se présente.

Une solution consiste à placer des DoEvents dans le traitement, mais ce n'est pas une réponse pour l'utilitaire de Popup messages puisque ce n'est pas sous son contrôle.

J'ai bien essayé de placer des DoEvents déclenchés par un Application.OnTime, mais même l'Application.OnTime ne se déclenche pas (!) si le contrôle n'est pas rendu à Excel entre temps (DoEvents, MsgBox, sortie de Macro, etc...).



Modifié par Debrief le 19/11/2019 15:27
maheln
 Posté le 19/11/2019 à 10:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

oui c'est le message ,

nouveau test ,je reprend tous à zéro,tous ce passe bien et la j'ai ce message https://www.cjoint.com/c/IKtj3rWm3Gu

je dispose de 8 go de ram

merci de votre patience et de votre compréhension

Debrief
 Posté le 19/11/2019 à 11:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Certes mais ce n'est pas déterministe.

Je crois qu'il va falloir tout simplement supprimer ces popup basés sur un UserForm pour garantir le bon fonctionnement ! Dommage c'était un outil que j'avais développé et qui me plaisait bien

A noter que j'ai fait un utilitaire qui utilise une Shape Rectangle à la place d'un UserForm, mais le problème (on n'en sort pas !) c'est que sont affichage est tributaire des Application.ScreenUpdating puisque le .Parent d'une Shape est la feuille.

Du coup je ne sais plus quoi utiliser. Sans doute faudrait-il faire apparaitre une fenêtre d'un processus hors Excel pour ne pas subir ces contraintes. Je vais voir ce qui est disponible.



Modifié par Debrief le 19/11/2019 11:36
maheln
 Posté le 19/11/2019 à 11:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

mois aussi je trouver cela bien ,pourriez vous m'expliquer pourquoi la mémoire surcharge,j'avait dans l’idée qu'elle était utiliser et ensuite libéré automatiquement ..

merci de votre patience et de votre compréhension

Debrief
 Posté le 19/11/2019 à 11:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

nouveau test ,je reprend tous à zéro,tous ce passe bien et la j'ai ce message

Ok, probablement la mise en mémoire des cellules d'une feuilles.

Un message d'erreur n'est pas suffisant. Il faut que tu me dises ce que tu as fait pour y arriver. Quelle est la taille de la feuille stock (?) concernée ? Est-ce que cela montre une instruction dans le VBA ?

Le plus simple serait de ma passer le fichier. Sinon je dois faire le devin...

Debrief
 Posté le 19/11/2019 à 11:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

A propos, pour envoyer une image, inutile de passer par cjoint.com.

Enregistre ton image sur ton ordi et utilise ce symbole pour l'inclure dans le post.



Modifié par Debrief le 19/11/2019 11:50
maheln
 Posté le 19/11/2019 à 11:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

chaque tableau en feuille stock 1204 lignes,et entre 1015 et 1018 lignes occuper dans chaque tableau ,quelque rare pique de 1100 ligne occuper(celons les absence ,maladie ,ext , 642 groupes feuille CA

pour les message d'erreur rien vue d'autre je vais retourner voir

oui pour les capture je ferai ainsi

merci de votre patience et de votre compréhension



Modifié par maheln le 19/11/2019 11:58
Debrief
 Posté le 19/11/2019 à 12:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Ce ne sont pas 1200 lignes qui vont saturer la mémoire. Par contre 642 feuille CA c'est gigantesque. Même si on ne traite qu'une seule feuille à la fois. J'espère que VBA libère bien les tableaux dynamiques en sortie de procédure.

De toutes façons, je ne sais toujours pas où tu as un erreur et ce qui la provoque, donc je n'effectue pas de recherche.

Publicité
maheln
 Posté le 19/11/2019 à 12:14 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

veuillez excuse ma bêtise,

votre programmation pour userform 1 que je trouve bien n’était pas en cause

alors ,en faite c'est un peu de ma faute ,pourriez-vous dans macro paramètre, ajouter une limitation en nombre de lignes pour la copie des tableau en feuille 2 ,le blocage viens du faite que quand j'ai remplie les tableau de stock ,le tableau du 10/02/2019 ne la pas était car je n'avait pas encore les chiffres ,du coup trop de ligne a copier puisque toute vides ,je pence du moins

pourquoi dans paramètre, je demande cela ,simplement de manière à ce que si le nombre de lignes des tableaux augmente ,je puisse le modifier facilement

non ! 642 groupe en feuille CA

merci de votre patience et de votre compréhension



Modifié par maheln le 19/11/2019 12:37
Debrief
 Posté le 19/11/2019 à 13:21 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Il n'y a pas de bêtise ! Il n'y a que des erreurs qu'on doit corriger et dont on apprend pour ne pas les reproduite.

J'ai vérifié (et affiché au moment du choix de la date) le nombre de lignes de Stock ce qui n'était pas le cas précédemment.

Aussi ajouté des DoEvents dans toutes les boucles de manière à rendre la main à Excel pour gérer son foutu UserForm pour qu'il ne parte pas en "not responding" !

Fichier -> https://cjoint.com/c/IKtmrsxxbSB

S'il y a problème de mémoire ce serait plutôt dans la macro de modification des noms de NDP car je crois que pour ça, chaque tableau de feuille CA est intégralement chargé en mémoire. A vérifier.

maheln
 Posté le 19/11/2019 à 14:03 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

je reprend tous à zéro et vous dit ce qu'il en ressort

merci de votre patience et de votre compréhension

maheln
 Posté le 19/11/2019 à 16:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

20 tableaux stocké pas d'erreur pour le moment je poursuit

merci de votre patience et de votre compréhension

maheln
 Posté le 19/11/2019 à 20:56 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

pour la formule copier en feuille RES ,

est t'il possible de la modifier pour que si en cellule C1 feuille RES il y à 1 alors dans la formule I1;si en C1 il y à 2 alors dans la formule I2,si dans C1 il y à 3 ,dans la formule I3 et ainsi de suite jusqu'à 5

merci de votre patience et de votre compréhension

Debrief
 Posté le 19/11/2019 à 21:08 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Pour plus de sécurité, donne la formule à ta façon comme précédemment pour au moins 2 cellules contenant cette formule. Je la traduirai en formule générique.

Parce que je ne comprends pas ton I1, I2, ..., I5. Qu'est-ce qu'il y a là-dedans ?
Explique la fonctionnalité de cette formule de manière à ce que je comprenne à quoi ça sert et s'il n'y pas mieux à faire.

Edit: Si le but c'est de se débarrasser du report ce CA dans RES alors c'est une bonne idée. Un process de moins.

D'ailleurs la formule actuelle pourrait très bien aller chercher le chiffre dans la dernière ligne CA au lieu de la prendre dans le report de CA dans RES.
Car on peut connaître la dernière ligne en CA avec un NBVAL(H$8:H1$048576). La dernière ligne sur la feuille CA c'est NBVAL(H$8:H1$048576) + (8 - 1). De là on peut utiliser un DECALER pour taper dans les bonnes cellules.
Est-ce que ce report de CA dans RES sert à quelque chose d'autre ? Sinon autant s'en débarrasser.



Modifié par Debrief le 19/11/2019 21:29
maheln
 Posté le 19/11/2019 à 21:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonsoir,

je vais voir si possible de supprimé le report en RES

je voie pour la formule je reviens

merci de votre patience et de votre compréhension

maheln
 Posté le 19/11/2019 à 23:18 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonsoir,

sauf bêtise de ma part

en c13

SI(C3=0;"";SI(C3=1;SI($C$1=1;SI(CA!I$1=1;C$21;SI(CA!I$1=2;C$22;SI(CA!I$1=3;C$23;SI(CA!I$1=4;C$24;SI(CA!I$1=5;C$25;SI(CA!I$1=6;C$26;SI(CA!I$1=7;C$27;SI(CA!I$1=8;C$28)))))))); SI($C$1=2;SI(CA!I$2=1;C$21;SI(CA!I$2=2;C$22;SI(CA!I$2=3;C$23;SI(CA!I$2=4;C$24;SI(CA!I$2=5;C$25;SI(CA!I$2=6;C$26;SI(CA!I$2=7;C$27;SI(CA!I$2=8;C$28)))))))); SI($C$1=3;SI(CA!I$3=1;C$21;SI(CA!I$3=2;C$22;SI(CA!I$3=3;C$23;SI(CA!I$3=4;C$24;SI(CA!I$3=5;C$25;SI(CA!I$3=6;C$26;SI(CA!I$3=7;C$27;SI(CA!I$3=8;C$28)))))))); SI($C$1=4;SI(CA!I$4=1;C$21;SI(CA!I$4=2;C$22;SI(CA!I$4=3;C$23;SI(CA!I$4=4;C$24;SI(CA!I$4=5;C$25;SI(CA!I$4=6;C$26;SI(CA!I$4=7;C$27;SI(CA!I$4=8;C$28)))))))); SI($C$1=5;SI(CA!I$5=1;C$21;SI(CA!I$5=2;C$22;SI(CA!I$5=3;C$23;SI(CA!I$5=4;C$24;SI(CA!I$5=5;C$25;SI(CA!I$5=6;C$26;SI(CA!I$5=7;C$27;SI(CA!I$5=8;C$28))))))));"")))))))

en C14

SI(C4=0;"";SI(C4=1;SI($C$1=1;SI(CA!J$1=1;C$21;SI(CA!J$1=2;C$22;SI(CA!J$1=3;C$23;SI(CA!J$1=4;C$24;SI(CA!J$1=5;C$25;SI(CA!J$1=6;C$26;SI(CA!J$1=7;C$27;SI(CA!J$1=8;C$28)))))))); SI($C$1=2;SI(CA!J$2=1;C$21;SI(CA!J$2=2;C$22;SI(CA!J$2=3;C$23;SI(CA!J$2=4;C$24;SI(CA!J$2=5;C$25;SI(CA!J$2=6;C$26;SI(CA!J$2=7;C$27;SI(CA!J$2=8;C$28)))))))); SI($C$1=3;SI(CA!J$3=1;C$21;SI(CA!J$3=2;C$22;SI(CA!J$3=3;C$23;SI(CA!J$3=4;C$24;SI(CA!J$3=5;C$25;SI(CA!J$3=6;C$26;SI(CA!J$3=7;C$27;SI(CA!I$3=8;C$28)))))))); SI($C$1=4;SI(CA!J$4=1;C$21;SI(CA!J$4=2;C$22;SI(CA!J$4=3;C$23;SI(CA!J$4=4;C$24;SI(CA!J$4=5;C$25;SI(CA!J$4=6;C$26;SI(CA!J$4=7;C$27;SI(CA!J$4=8;C$28)))))))); SI($C$1=5;SI(CA!J$5=1;C$21;SI(CA!J$5=2;C$22;SI(CA!J$5=3;C$23;SI(CA!J$5=4;C$24;SI(CA!J$5=5;C$25;SI(CA!J$5=6;C$26;SI(CA!J$5=7;C$27;SI(CA!J$5=8;C$28))))))));"")))))))

en C15

SI(C5=0;"";SI(C5=1;SI($C$1=1;SI(CA!K$1=1;C$21;SI(CA!K$1=2;C$22;SI(CA!K$1=3;C$23;SI(CA!K$1=4;C$24;SI(CA!K$1=5;C$25;SI(CA!K$1=6;C$26;SI(CA!K$1=7;C$27;SI(CA!K$1=8;C$28)))))))); SI($C$1=2;SI(CA!K$2=1;C$21;SI(CA!K$2=2;C$22;SI(CA!K$2=3;C$23;SI(CA!K$2=4;C$24;SI(CA!K$2=5;C$25;SI(CA!K$2=6;C$26;SI(CA!K$2=7;C$27;SI(CA!K$2=8;C$28)))))))); SI($C$1=3;SI(CA!K$3=1;C$21;SI(CA!K$3=2;C$22;SI(CA!K$3=3;C$23;SI(CA!K$3=4;C$24;SI(CA!K$3=5;C$25;SI(CA!K$3=6;C$26;SI(CA!K$3=7;C$27;SI(CA!K$3=8;C$28)))))))); SI($C$1=4;SI(CA!K$4=1;C$21;SI(CA!K$4=2;C$22;SI(CA!K$4=3;C$23;SI(CA!K$4=4;C$24;SI(CA!K$4=5;C$25;SI(CA!K$4=6;C$26;SI(CA!K$4=7;C$27;SI(CA!K$4=8;C$28)))))))); SI($C$1=5;SI(CA!K$5=1;C$21;SI(CA!K$5=2;C$22;SI(CA!K$5=3;C$23;SI(CA!K$5=4;C$24;SI(CA!K$5=5;C$25;SI(CA!K$5=6;C$26;SI(CA!K$5=7;C$27;SI(CA!K$5=8;C$28))))))));"")))))))

en C16

SI(C6=0;"";SI(C6=1;SI($C$1=1;SI(CA!L$1=1;C$21;SI(CA!L$1=2;C$22;SI(CA!L$1=3;C$23;SI(CA!L$1=4;C$24;SI(CA!L$1=5;C$25;SI(CA!L$1=6;C$26;SI(CA!L$1=7;C$27;SI(CA!L$1=8;C$28)))))))); SI($C$1=2;SI(CA!L$2=1;C$21;SI(CA!L$2=2;C$22;SI(CA!L$2=3;C$23;SI(CA!L$2=4;C$24;SI(CA!L$2=5;C$25;SI(CA!L$2=6;C$26;SI(CA!L$2=7;C$27;SI(CA!L$2=8;C$28)))))))); SI($C$1=3;SI(CA!L$3=1;C$21;SI(CA!L$3=2;C$22;SI(CA!L$3=3;C$23;SI(CA!L$3=4;C$24;SI(CA!L$3=5;C$25;SI(CA!L$3=6;C$26;SI(CA!L$3=7;C$27;SI(CA!L$3=8;C$28)))))))); SI($C$1=4;SI(CA!L$4=1;C$21;SI(CA!L$4=2;C$22;SI(CA!L$4=3;C$23;SI(CA!L$4=4;C$24;SI(CA!L$4=5;C$25;SI(CA!L$4=6;C$26;SI(CA!L$4=7;C$27;SI(CA!L$4=8;C$28)))))))); SI($C$1=5;SI(CA!L$5=1;C$21;SI(CA!L$5=2;C$22;SI(CA!L$5=3;C$23;SI(CA!L$5=4;C$24;SI(CA!L$5=5;C$25;SI(CA!L$5=6;C$26;SI(CA!L$5=7;C$27;SI(CA!L$5=8;C$28))))))));"")))))))

en C17

SI(C7=0;"";SI(C7=1;SI($C$1=1;SI(CA!M$1=1;C$21;SI(CA!M$1=2;C$22;SI(CA!M$1=3;C$23;SI(CA!M$1=4;C$24;SI(CA!M$1=5;C$25;SI(CA!M$1=6;C$26;SI(CA!M$1=7;C$27;SI(CA!M$1=8;C$28)))))))); SI($C$1=2;SI(CA!M$2=1;C$21;SI(CA!M$2=2;C$22;SI(CA!M$2=3;C$23;SI(CA!M$2=4;C$24;SI(CA!M$2=5;C$25;SI(CA!M$2=6;C$26;SI(CA!M$2=7;C$27;SI(CA!M$2=8;C$28)))))))); SI($C$1=3;SI(CA!M$3=1;C$21;SI(CA!M$3=2;C$22;SI(CA!M$3=3;C$23;SI(CA!M$3=4;C$24;SI(CA!M$3=5;C$25;SI(CA!M$3=6;C$26;SI(CA!M$3=7;C$27;SI(CA!M$3=8;C$28)))))))); SI($C$1=4;SI(CA!M$4=1;C$21;SI(CA!M$4=2;C$22;SI(CA!M$4=3;C$23;SI(CA!M$4=4;C$24;SI(CA!M$4=5;C$25;SI(CA!M$4=6;C$26;SI(CA!M$4=7;C$27;SI(CA!M$4=8;C$28)))))))); SI($C$1=5;SI(CA!M$5=1;C$21;SI(CA!M$5=2;C$22;SI(CA!M$5=3;C$23;SI(CA!M$5=4;C$24;SI(CA!M$5=5;C$25;SI(CA!M$5=6;C$26;SI(CA!M$5=7;C$27;SI(CA!M$5=8;C$28))))))));"")))))))

pour la formule ce serai ci-dessus

ou peu être remplace C1 par une fenêtre demandant le choix

pour la copie en feuille RES je garde pour le moment je reviendrai sur le sujet un peu plus tard

"Parce que je ne comprends pas ton I1, I2, ..., I5. Qu'est-ce qu'il y a là-dedans ?"

c'est a partir de ces lignes que les données sont classées

merci de vote patience et de votre compréhension



Modifié par maheln le 20/11/2019 01:06
Publicité
Debrief
 Posté le 20/11/2019 à 04:53 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Pour les formules complexes, je te recommande d'utiliser un éditeur de texte (Notepad ou Notepad++) pour indenter sur les SI et y voir plus clair.
Excel accepte jusqu'à un certain nombre de lignes ce genre de notation qui en saisie direct dans Excel se fait avec <Alt> + Entrée pour passer à la ligne (en VBA avec vbLf).

Par rapport à la formule actuelle il n'y a pas le test SI(CA!I$1=0...

Ici j'ai mis des points parce que PC Astuces compresse tous les blancs à 1 seul et n'a pas de style pour le code.

1ère formule: en C13

SI(C3=0;"";
....SI(C3=1;
........SI($C$1=1;
............SI(CA!I$1=1;C$21;
............SI(CA!I$1=2;C$22;
............SI(CA!I$1=3;C$23;
............SI(CA!I$1=4;C$24;
............SI(CA!I$1=5;C$25;
............SI(CA!I$1=6;C$26;
............SI(CA!I$1=7;C$27;
............SI(CA!I$1=8;C$28))))))));
........SI($C$1=2;
............SI(CA!I$2=1;C$21;
............SI(CA!I$2=2;C$22;
............SI(CA!I$2=3;C$23;
............SI(CA!I$2=4;C$24;
............SI(CA!I$2=5;C$25;
............SI(CA!I$2=6;C$26;
............SI(CA!I$2=7;C$27;
............SI(CA!I$2=8;C$28))))))));
........SI($C$1=3;
............SI(CA!I$3=1;C$21;
............SI(CA!I$3=2;C$22;
............SI(CA!I$3=3;C$23;
............SI(CA!I$3=4;C$24;
............SI(CA!I$3=5;C$25;
............SI(CA!I$3=6;C$26;
............SI(CA!I$3=7;C$27;
............SI(CA!I$3=8;C$28))))))));
........SI($C$1=4;
............SI(CA!I$4=1;C$21;
............SI(CA!I$4=2;C$22;
............SI(CA!I$4=3;C$23;
............SI(CA!I$4=4;C$24;
............SI(CA!I$4=5;C$25;
............SI(CA!I$4=6;C$26;
............SI(CA!I$4=7;C$27;
............SI(CA!I$4=8;C$28))))))));
........SI($C$1=5;
............SI(CA!I$5=1;C$21;
............SI(CA!I$5=2;C$22;
............SI(CA!I$5=3;C$23;
............SI(CA!I$5=4;C$24;
............SI(CA!I$5=5;C$25;
............SI(CA!I$5=6;C$26;
............SI(CA!I$5=7;C$27;
............SI(CA!I$5=8;C$28))))))));
"")))))))

On peut remplacer:
C$21 -> CA!I$(dernière ligne de report de CA) -> DECALER(CA!$I$7, MAX(1, NBVAL(H$8:H1$048576)), 0) -> DECALER('CA'!$I$7; MAX(1; NBVAL(CA!$H$8:H$1048576)); (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13)))
C$22 -> CA!J$(dernière ligne de report de CA) -> DECALER(CA!$I$7, MAX(1, NBVAL(H$8:H1$048576)), 1) -> DECALER('CA'!$I$7; MAX(1; NBVAL(CA!$H$8:H$1048576)); (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13)))
C$23 -> CA!K$(dernière ligne de report de CA) -> DECALER(CA!$I$7, MAX(1, NBVAL(H$8:H1$048576)), 2) -> DECALER('CA'!$I$7; MAX(1; NBVAL(CA!$H$8:H$1048576)); (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13)))
C$24 -> CA!L$(dernière ligne de report de CA) -> Etc...
C$25 -> CA!IM$(dernière ligne de report de CA)
C$26 -> CA!N$(dernière ligne de report de CA)
C$27 -> CA!O$(dernière ligne de report de CA)
C$28 -> CA!P$(dernière ligne de report de CA)

D$21 -> CA!Y$(dernière ligne de report de CA) -> DECALER(CA!$I$7, MAX(1, NBVAL(H$8:H1$048576)), 16) -> DECALER('CA'!$I$7; MAX(1; NBVAL(CA!$H$8:H$1048576)); (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13)))
D$22 -> CA!Z$(dernière ligne de report de CA) -> DECALER(CA!$I$7, MAX(1, NBVAL(H$8:H1$048576)), 17)-> DECALER('CA'!$I$7; MAX(1; NBVAL(CA!$H$8:H$1048576)); (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13)))
D$23 -> CA!AA$(dernière ligne de report de CA) -> DECALER(CA!$I$7, MAX(1, NBVAL(H$8:H1$048576)), 18) -> DECALER('CA'!$I$7; MAX(1; NBVAL(CA!$H$8:H$1048576)); (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13)))
D$24 -> CA!AB$(dernière ligne de report de CA) -> Etc...
D$25 -> CA!AC$(dernière ligne de report de CA)
D$26 -> CA!AD$(dernière ligne de report de CA)

D$27 -> CA!AE$(dernière ligne de report de CA)
D$28 -> CA!AF$(dernière ligne de report de CA)

La formule générique pour C$21 en C13 est donc =DECALER('CA'!$I$7;MAX(1;NBVAL('CA'!$H$8:$H$148576));(COLONNE()-COLONNE($C21))*16+LIGNE()-LIGNE(C$13))
La formule générique pour C$21 en C21 est donc =DECALER('CA'!$I$7;MAX(1;NBVAL('CA'!$H$8:$H$148576));(COLONNE()-COLONNE($C21))*16+LIGNE()-LIGNE(C$21))

Donc 2 solutions:
1 - Soit la formule en C13, C14, ..., C17 puis D13, D14, ..., D17 puis etc... contient la formule générique pour C$21 en C13 => formule à rallonge
2 - Soit la formule en C13, C14, ..., C17 puis D13, D14, ..., D17 puis etc... contient la référence à C$21, ..., C$28 puis D$21, ..., D$28 puis etc... mais ces cellules contiennent la formule générique pour C$21 en C21 et on peut se passer du report de la feuille CA en feuille RES à condition de placer la formule générique pour C$21 en C21 dans RES au moment du formatage de CA, ce qui est simple.

Je pense que la 2ème solution est plus sage.



Modifié par Debrief le 20/11/2019 11:53
Debrief
 Posté le 20/11/2019 à 05:42 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Quant à la formule en C13 etc... J'ai besoin de voir l'évolution en lignes mais aussi en colonnes pour faire une formule générique.
Confirme que ce sont les bonnes formules et j'essaierai de trouver la formule générique

En C13...................................En C14...................................En D13...................................En D14
SI(C3=0;"";..............................SI(C4=0;"";..............................SI(D3=0;"";..............................SI(D4=0;"";
....SI(C3=1;.................................SI(C4=1;.................................SI(D3=1;.................................SI(D4=1;
........SI($C$1=1;...............................SI($C$1=1;...............................SI($C$1=1;...............................SI($C$1=1;
............SI(CA!I$1=1;C$21;........................SI(CA!J$1=1;C$21;........................SI(CA!Y$1=1;D$21;........................SI(CA!Z$1=1;D$21;
............SI(CA!I$1=2;C$22;........................SI(CA!J$1=2;C$22;........................SI(CA!Y$1=2;D$22;........................SI(CA!Z$1=2;D$22;
............SI(CA!I$1=3;C$23;........................SI(CA!J$1=3;C$23;........................SI(CA!Y$1=3;D$23;........................SI(CA!Z$1=3;D$23;
............SI(CA!I$1=4;C$24;........................SI(CA!J$1=4;C$24;........................SI(CA!Y$1=4;D$24;........................SI(CA!Z$1=4;D$24;
............SI(CA!I$1=5;C$25;........................SI(CA!J$1=5;C$25;........................SI(CA!Y$1=5;D$25;........................SI(CA!Z$1=5;D$25;
............SI(CA!I$1=6;C$26;........................SI(CA!J$1=6;C$26;........................SI(CA!Y$1=6;D$26;........................SI(CA!Z$1=6;D$26;
............SI(CA!I$1=7;C$27;........................SI(CA!J$1=7;C$27;........................SI(CA!Y$1=7;D$27;........................SI(CA!Z$1=7;D$27;
............SI(CA!I$1=8;C$28;""))))))));.............SI(CA!J$1=8;C$28;""))))))));.............SI(CA!Y$1=8;D$28
;""))))))));.............SI(CA!Z$1=8;D$28;""))))))));
........SI($C$1=2;...............................SI($C$1=2;...............................SI($C$1=2;...............................SI($C$1=2;
............SI(CA!I$2=1;C$21;........................SI(CA!J$2=1;C$21;........................SI(CA!Y$2=1;D$21;........................SI(CA!Z$2=1;D$21;
............SI(CA!I$2=2;C$22;........................SI(CA!J$2=2;C$22;........................SI(CA!Y$2=2;D$22;........................SI(CA!Z$2=2;D$22;
............SI(CA!I$2=3;C$23;........................SI(CA!J$2=3;C$23;........................SI(CA!Y$2=3;D$23;........................SI(CA!Z$2=3;D$23;
............SI(CA!I$2=4;C$24;........................SI(CA!J$2=4;C$24;........................SI(CA!Y$2=4;D$24;........................SI(CA!Z$2=4;D$24;
............SI(CA!I$2=5;C$25;........................SI(CA!J$2=5;C$25;........................SI(CA!Y$2=5;D$25;........................SI(CA!Z$2=5;D$25;
............SI(CA!I$2=6;C$26;........................SI(CA!J$2=6;C$26;........................SI(CA!Y$2=6;D$26;........................SI(CA!Z$2=6;D$26;
............SI(CA!I$2=7;C$27;........................SI(CA!J$2=7;C$27;........................SI(CA!Y$2=7;D$27;........................SI(CA!Z$2=7;D$27;
............SI(CA!I$2=8;C$28;""))))))));.............SI(CA!J$2=8;C$28
;""))))))));.............SI(CA!Y$2=8;D$28;""))))))));.............SI(CA!Z$2=8;D$28;""))))))));
........SI($C$1=3;...............................Etc......................................Etc......................................Etc...
............SI(CA!I$3=1;C$21;
............SI(CA!I$3=2;C$22;
............SI(CA!I$3=3;C$23;
............SI(CA!I$3=4;C$24;
............SI(CA!I$3=5;C$25;
............SI(CA!I$3=6;C$26;
............SI(CA!I$3=7;C$27;
............SI(CA!I$3=8;C$28;""))))))));
........SI($C$1=4;
............SI(CA!I$4=1;C$21;
............SI(CA!I$4=2;C$22;
............SI(CA!I$4=3;C$23;
............SI(CA!I$4=4;C$24;
............SI(CA!I$4=5;C$25;
............SI(CA!I$4=6;C$26;
............SI(CA!I$4=7;C$27;
............SI(CA!I$4=8;C$28;""))))))));
........SI($C$1=5;
............SI(CA!I$5=1;C$21;
............SI(CA!I$5=2;C$22;
............SI(CA!I$5=3;C$23;
............SI(CA!I$5=4;C$24;
............SI(CA!I$5=5;C$25;
............SI(CA!I$5=6;C$26;
............SI(CA!I$5=7;C$27;
............SI(CA!I$5=8;C$28;""))))))));
"")))))))



Modifié par Debrief le 20/11/2019 10:01
maheln
 Posté le 20/11/2019 à 06:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

pour le test SI(CA!I$1=0... un oublie de ma part

pour (Notepad ou Notepad++) je vais voir cela ,jamais utiliser avant

merci "qui en saisie direct dans Excel se fait avec <Alt> + Entrée pour passer à la ligne (en VBA avec vbLf)."

je suis de votre avis solution 2

pour les formules ok a part

ligne 4 "........SI($C$1=1;...............................SI($C$1=1;...............................SI($C$1=1;...............................SI($C$1=1;

merci de votre patience et de votre compréhension

Debrief
 Posté le 20/11/2019 à 10:46 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

OK pour la ligne 4 j'ai corrigé dans le message précédent pour avoir une trace correcte.

Pour le SI(CA!I$1=0;""; je pense qu'il vaut mieux ne pas le tester puisqu'on ne met rien dans la cellule.

Pa contre il faut donner la valeur si CA!I$1 n'est ni 1, ni 2, ..., ni 8 sinon la cellule rendra "FAUX" et donc mettre ce "" sur le dernier test de la valeur 8: SI(CA!I$1=8;C$28;""))))))));
Tableau également corrigé là-dessus.

Voici la formule généralisée uniquement pour la colonne de CA à tester avec la même formule qu'avant: DECALER($I$1,0, (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))
On aurait pu écrire:
C$21 -> DECALER($C$21,0,COLONNE()-COLONNE($C13))
C$22 -> DECALER($C$22,0,COLONNE()-COLONNE($C13))
Mais ça alourdit la formule et en copiant la formule dans les autres colonnes, Excel fera le décalage.

En C13 Généralisée devient-> En C13
SI(C3=0;"";..................SI(C3=0;"";
....SI(C3=1;.....................SI(C3=1;
........SI($C$1=1....................SI($C$1=1;
............SI(CA!I$1=1;C$21;............SI(DECALER($I$1;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=1;C$21;
............SI(CA!I$1=2;C$22;............SI(DECALER($I$1;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=2;C$22;
............SI(CA!I$1=3;C$23;............SI(DECALER($I$1;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=3;C$23;
............SI(CA!I$1=4;C$24;............SI(DECALER($I$1;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=4;C$24;
............SI(CA!I$1=5;C$25;............SI(DECALER($I$1;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=5;C$25;
............SI(CA!I$1=6;C$26;............SI(DECALER($I$1;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=6;C$26;
............SI(CA!I$1=7;C$27;............SI(DECALER($I$1;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=7;C$27;
............SI(CA!I$1=8;C$28;""))))))));.SI(DECALER($I$1;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=8;C$28;""))))))));
........SI($C$1=2;...................SI($C$1=2;
............SI(CA!I$2=1;C$21;............SI(DECALER($I$2;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=1;C$21;
............SI(CA!I$2=2;C$22;............SI(DECALER($I$2;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=2;C$22;
............SI(CA!I$2=3;C$23;............SI(DECALER($I$2;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=3;C$23;
............SI(CA!I$2=4;C$24;............SI(DECALER($I$2;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=4;C$24;
............SI(CA!I$2=5;C$25;............SI(DECALER($I$2;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=5;C$25;
............SI(CA!I$2=6;C$26;............SI(DECALER($I$2;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=6;C$26;
............SI(CA!I$2=7;C$27;............SI(DECALER($I$2;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=7;C$27;
............SI(CA!I$2=8;C$28;""))))))));.SI(DECALER($I$2;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=8;C$28;""))))))));
........SI($C$1=3;...................SI($C$1=3;
............SI(CA!I$3=1;C$21;............SI(DECALER($I$3;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=1;C$21;
............SI(CA!I$3=2;C$22;............SI(DECALER($I$3;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=2;C$22;
............SI(CA!I$3=3;C$23;............SI(DECALER($I$3;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=3;C$23;
............SI(CA!I$3=4;C$24;............SI(DECALER($I$3;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=4;C$24;
............SI(CA!I$3=5;C$25;............SI(DECALER($I$3;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=5;C$25;
............SI(CA!I$3=6;C$26;............SI(DECALER($I$3;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=6;C$26;
............SI(CA!I$3=7;C$27;............SI(DECALER($I$3;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=7;C$27;
............SI(CA!I$3=8;C$28;""))))))));.SI(DECALER($I$3;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=8;C$28;""))))))));
........SI($C$1=4;...................SI($C$1=4;
............SI(CA!I$4=1;C$21;............SI(DECALER($I$4;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=1;C$21;
............SI(CA!I$4=2;C$22;............SI(DECALER($I$4;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=2;C$22;
............SI(CA!I$4=3;C$23;............SI(DECALER($I$4;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=3;C$23;
............SI(CA!I$4=4;C$24;............SI(DECALER($I$4;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=4;C$24;
............SI(CA!I$4=5;C$25;............SI(DECALER($I$4;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=5;C$25;
............SI(CA!I$4=6;C$26;............SI(DECALER($I$4;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=6;C$26;
............SI(CA!I$4=7;C$27;............SI(DECALER($I$4;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=7;C$27;
............SI(CA!I$4=8;C$28;""))))))));.SI(DECALER($I$4;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=8;C$28;""))))))));
........SI($C$1=5;...................SI($C$1=5;
............SI(CA!I$5=1;C$21;............SI(DECALER($I$5;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=1;C$21;
............SI(CA!I$5=2;C$22;............SI(DECALER($I$5;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=2;C$22;
............SI(CA!I$5=3;C$23;............SI(DECALER($I$5;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=3;C$23;
............SI(CA!I$5=4;C$24;............SI(DECALER($I$5;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=4;C$24;
............SI(CA!I$5=5;C$25;............SI(DECALER($I$5;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=5;C$25;
............SI(CA!I$5=6;C$26;............SI(DECALER($I$5;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=6;C$26;
............SI(CA!I$5=7;C$27;............SI(DECALER($I$5;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=7;C$27;
............SI(CA!I$5=8;C$28;""))))))));.SI(DECALER($I$5;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=8;C$28;""))))))));
"")))))))



Modifié par Debrief le 20/11/2019 11:54
Debrief
 Posté le 20/11/2019 à 11:10 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Et finalement la formule en C13 à copier sur tout le Range:

=SI(C3=0;"";
SI(C3=1;
SI($C$1=1;
SI(DECALER(CA!$I$1;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=1;C$21;
SI(DECALER(CA!$I$1;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=2;C$22;
SI(DECALER(CA!$I$1;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=3;C$23;
SI(DECALER(CA!$I$1;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=4;C$24;
SI(DECALER(CA!$I$1;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=5;C$25;
SI(DECALER(CA!$I$1;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=6;C$26;
SI(DECALER(CA!$I$1;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=7;C$27;
SI(DECALER(CA!$I$1;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=8;C$28;""))))))));
SI($C$1=2;
SI(DECALER(CA!$I$2;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=1;C$21;
SI(DECALER(CA!$I$2;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=2;C$22;
SI(DECALER(CA!$I$2;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=3;C$23;
SI(DECALER(CA!$I$2;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=4;C$24;
SI(DECALER(CA!$I$2;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=5;C$25;
SI(DECALER(CA!$I$2;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=6;C$26;
SI(DECALER(CA!$I$2;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=7;C$27;
SI(DECALER(CA!$I$2;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=8;C$28;""))))))));
SI($C$1=3;
SI(DECALER(CA!$I$3;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=1;C$21;
SI(DECALER(CA!$I$3;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=2;C$22;
SI(DECALER(CA!$I$3;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=3;C$23;
SI(DECALER(CA!$I$3;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=4;C$24;
SI(DECALER(CA!$I$3;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=5;C$25;
SI(DECALER(CA!$I$3;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=6;C$26;
SI(DECALER(CA!$I$3;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=7;C$27;
SI(DECALER(CA!$I$3;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=8;C$28;""))))))));
SI($C$1=4;
SI(DECALER(CA!$I$4;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=1;C$21;
SI(DECALER(CA!$I$4;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=2;C$22;
SI(DECALER(CA!$I$4;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=3;C$23;
SI(DECALER(CA!$I$4;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=4;C$24;
SI(DECALER(CA!$I$4;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=5;C$25;
SI(DECALER(CA!$I$4;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=6;C$26;
SI(DECALER(CA!$I$4;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=7;C$27;
SI(DECALER(CA!$I$4;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=8;C$28;""))))))));
SI($C$1=5;
SI(DECALER(CA!$I$5;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=1;C$21;
SI(DECALER(CA!$I$5;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=2;C$22;
SI(DECALER(CA!$I$5;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=3;C$23;
SI(DECALER(CA!$I$5;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=4;C$24;
SI(DECALER(CA!$I$5;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=5;C$25;
SI(DECALER(CA!$I$5;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=6;C$26;
SI(DECALER(CA!$I$5;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=7;C$27;
SI(DECALER(CA!$I$5;0; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=8;C$28;""))))))));
"")))))))



Modifié par Debrief le 20/11/2019 14:03
Debrief
 Posté le 20/11/2019 à 12:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

EN RÉSUMÉ:

Partant de la formule ci-dessus, on peut encore simplifier:

Formule à placer en C13 et à copier sur toute la plage: car dépendante d'un décalage de colonnes Excel de la partie C$21, C$22 etc...

=SI(C3=0;"";
SI(C3=1;
SI(OU(NON(ESTNUM($C$1));$C$1<1;$C$1>5);"";
SI(DECALER(CA!$I$1; $C$1 - 1; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=1;C$21;
SI(DECALER(CA!$I$1; $C$1 - 1; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=2;C$22;
SI(DECALER(CA!$I$1; $C$1 - 1; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=3;C$23;
SI(DECALER(CA!$I$1; $C$1 - 1; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=4;C$24;
SI(DECALER(CA!$I$1; $C$1 - 1; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=5;C$25;
SI(DECALER(CA!$I$1; $C$1 - 1; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=6;C$26;
SI(DECALER(CA!$I$1; $C$1 - 1; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=7;C$27;
SI(DECALER(CA!$I$1; $C$1 - 1; (COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=8;C$28;"")))))))))))

Formule à placer en C21 et dans toute la plage de report des chiffres de la dernière ligne de CA: car non dépendante d'aucun décalage

=DECALER(CA!$I$8;MAX(0;NBVAL(CA!$H$8:$H$148576) - 1);(COLONNE()-COLONNE($C21))*16+LIGNE()-LIGNE(C$21))

Edit: Je vais modifier le fichier en conséquence et le livrer plus tard...



Modifié par Debrief le 20/11/2019 15:34
Debrief
 Posté le 20/11/2019 à 15:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Voici le fichier -> https://cjoint.com/c/IKuo1O2aqHB

Il n'y a plus de report de CA en RES et toutes les formules sont définies au formatage de la feuille CA.

Le formatage de la feuille CA intervient lors de la création de la feuille CA (un report sur une feuille CA qui n'existe pas) ou lors de la répercussion de ma modification des Noms dans NDP

J'ai testé rapidement mais ça devrait aller... A vérifier surtout les feuilles RES.

Debrief
 Posté le 20/11/2019 à 16:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

D'ailleurs il n'est pas nécessaire que tu repartes à zéro dans ton fichier.

Exécute la Macro de reconstruction sur la page NDP, ça devrait suffire.

maheln
 Posté le 20/11/2019 à 18:56 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

j'ai ouvert le fichier fournie ,mis a jour la liste des noms en NDP (642) ,formater les groupe noms feuille CA model ,préparé feuille RES model ,copier dans stock les tableaux à copier feuille 2 ,lancer la copie feuille 2 en CA+nom choisie ,copier 3 tableau ,regarder si les formules amener le bon résulta,oui,donc j'ai enregistre le classeur ,fermer le classeur

j'ouvre de nouveau le classeur ,le classeur s'ouvre puis disparais ,je tente une nouvel ouverture du classeur ,un message indique que le classeur est déjà ouvert,je la cherche partout introuvable ,je nettoie toute les trace ,redémarre ,essaie d’ouvrir le classeur ,ce reproduit exactement la même chose, il s'ouvre et disparais ,je le surprime ,ouvre une copie vierge qui s'ouvre correctement mes ou il faut tout reprendre à zéro

chapeau bas pour les formules ,merci pour les explications

merci de vote patience et de votre compréhension

Publicité
Pages : Début ... 5 6 [7] 8 9 ... Fin
[Début] Page 7 sur 9 [Fin]

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Sujets relatifs
Aucun sujet pertinent lié trouvé
 > Tous les forums > Forum Bureautique