> Tous les forums > Forum Bureautique
 macroSujet résolu
Ajouter un message à la discussion
Pages : Début ... 2 3 [4] 5 6 ... Fin
[Début] Page 4 sur 9 [Fin]
Debrief
 Posté le 28/10/2019 à 08:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Ok, si ça fonctionne c'est l'essentiel...

maheln
 Posté le 28/10/2019 à 10:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

oui , cela est sur ,ce que je souhaitai c'est que le code soit regarder par vos soins expérimenter ,cette macros trie ( va être utiliser avant chaque report en feuille CA ,et si mes erreurs son trop lourde ,qu'elle serons les conséquences ?

auriez vous la gentillesse de m'expliquer ce qui va et ce qui ne va pas ? , et vous accepter ,m'expliquer ..

merci de votre patience et de votre compréhension



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

Je me demande pourquoi tu reviens encore sur ces copies alors qu'on a déjà réglé la question dans le message Posté le 27/10/2019 à 04:00.

Pour faire ce que tu décris au plus simple et au plus logique:

Sub Copier1()
Dim i As Long
Dim j As Long
Dim fin As Long

With ThisWorkbook.Worksheets("trie")

Application.ScreenUpdating = False

i = 4
j = 4
fin = .Range("B" & Rows.Count).End(xlUp).Row

While (i <= fin)
.Range("B" + CStr(i) + ":" + "J" + CStr(i)).Copy
.Range("L" + CStr(j)).PasteSpecial Paste:=xlPasteAll
ThisWorkbook.Worksheets("feuil2").Range("B" + CStr(j)).PasteSpecial Paste:=xlPasteAll

i = i + 2
j = j + 1
Wend

Application.CutCopyMode = False
Application.ScreenUpdating = True

End With
End Sub

Pour commenter la nouvelle version du code que tu as faite:

- Par rapport à la version précédente, tu as inversé le rôle des indices: "i" devient l'indice des tableaux cible (sauf pour le While !!) et "j" devient l'indice du tableau source.

- Les 2 indices "i" et "j" devraient commencer à la 1ère ligne de leurs tableaux respectifs. TOUS les tableaux commencent en ligne 4 et tu les initialise à i = 1 et j = 2. Ça ne correspond à rien.

- La boucle While (i <= fin) est donc une boucle sur l'indice des tableaux cible. Ce qu'on veut c'est une boucle sur les lignes du tableau source While (j <= fin)

Voyons ce que ça donne sur la 1ère boucle: (i = 1, j = 2) Pas OK
.Range("B" + CStr(j) + ":" + "J" + CStr(j)).Copy -> .Range("B2:J2").Copy
'.Range("L" + CStr(i + 2)).PasteSpecial Paste:=xlPasteAll -> '.Range("L3").PasteSpecial Paste:=xlPasteAll
ThisWorkbook.Worksheets("feuil2").Range("B" + CStr(i + 2)).PasteSpecial Paste:=xlPasteAll -> ThisWorkbook.Worksheets("feuil2").Range("B3").PasteSpecial Paste:=xlPasteAll

Voyons ce que ça donne sur la 2ème boucle: (i = 2, j = 4) OK
.Range("B" + CStr(j) + ":" + "J" + CStr(j)).Copy -> .Range("B4:J4").Copy
'.Range("L" + CStr(i + 2)).PasteSpecial Paste:=xlPasteAll -> '.Range("L4").PasteSpecial Paste:=xlPasteAll
ThisWorkbook.Worksheets("feuil2").Range("B" + CStr(i + 2)).PasteSpecial Paste:=xlPasteAll -> ThisWorkbook.Worksheets("feuil2").Range("B4").PasteSpecial Paste:=xlPasteAll

Voyons ce que ça donne sur la 3ème boucle: (i = 3, j = 6) OK
.Range("B" + CStr(j) + ":" + "J" + CStr(j)).Copy -> .Range("B6:J6").Copy
'.Range("L" + CStr(i + 2)).PasteSpecial Paste:=xlPasteAll -> '.Range("L5").PasteSpecial Paste:=xlPasteAll
ThisWorkbook.Worksheets("feuil2").Range("B" + CStr(i + 2)).PasteSpecial Paste:=xlPasteAll -> ThisWorkbook.Worksheets("feuil2").Range("B5").PasteSpecial Paste:=xlPasteAll

Voyons ce que ça donne sur la dernière boucle (i = 1018, j= 2036) et sur les 507 ou 508 dernières boucles: Pas OK
.Range("B" + CStr(j) + ":" + "J" + CStr(j)).Copy -> .Range("B2036:J2036").Copy
'.Range("L" + CStr(i + 2)).PasteSpecial Paste:=xlPasteAll -> '.Range("L1020").PasteSpecial Paste:=xlPasteAll
ThisWorkbook.Worksheets("feuil2").Range("B" + CStr(i + 2)).PasteSpecial Paste:=xlPasteAll -> ThisWorkbook.Worksheets("feuil2").Range("B1020").PasteSpecial Paste:=xlPasteAll

Prends la version indiquée ci-dessus.

Edit: Corrections sur les simulations 3ème ligne (j'ai du mal à suivre ces indices)



Modifié par Debrief le 28/10/2019 14:22
maheln
 Posté le 28/10/2019 à 15:50 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

merci d'avoir corriger et expliquer ma grosse bêtise,c'est pour cela que j'ai sollicité votre compétence,la boucle while(j<=fin )...

merci pour votre patience mise à rude épreuve et votre compréhension

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

bonjour,

en feuille stock, en attente, plusieurs tableaux,au dessus de chaque tableau ,en B3 ce trouve une date qui correspond au tableau qui ce trouve dessous B4:J1018,je voudrai que la sélection du tableau à traite avec la macro trie (poste précédant) ce face en sélectionnant la date la plus anciennes en b3 , comment faire pour chaque tableau ,par la date svp ?

B3 date b4:J1018 tableau , L3 date L4:T1018 tableau et ainsi de suite

j'ai supprimé la feuille TRIE ,remplacé With ThisWorkbook.Worksheets("TRIE") par With ThisWorkbook.Worksheets("stock")et bloque la copie '.Range("L"

les dates cellule b3 ,L3,V3,AF3,AP3 ,au dessus des tableau son de la plus anciennes en B3 à la plus récente en AP3

merci de votre patience et de votre compréhension



Modifié par maheln le 28/10/2019 17:59
Debrief
 Posté le 28/10/2019 à 19:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Questions:

- Combien de tableaux maximum dans la feuille "stock" ? 5 ?

- On choisit le tableau avec la date la plus ancienne et on fait la copie. Les autres tableaux sont ignorés et ne donnent lieu à aucune copie ?

- Sous quelle forme est la date ? Dans la feuille est-elle en format Date ou texte ? (Voir le format de cellule)
Le mieux serait une feuille "stock' pour exemple.



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

Ça ne change pas grand chose à part la recherche de la date la plus ancienne et le décalage pour les copier / coller.

Sub Copier1()
Dim i As Long
Dim j As Long
Dim fin As Long
Dim Cel As Range
Dim DateAncienne As Date
Dim NbColonnesDécalage As Long
Const NbColonnesDécalageEntreLesTableaux = 20

With ThisWorkbook.Worksheets("stock")

'Première Date
Set Cel = .Range("B3")

'Tant qu'il y a une date présente
Do While Not IsEmpty(Cel)
If IsDate(Cel.Value) Then
If DateAncienne = 0 Or Cel.Value < DateAncienne Then
DateAncienne = Cel.Value
NbColonnesDécalage = Cel.Column - .Range("B3").Column
End If
End If

'Date suivante
Set Cel = Cel.Offset(0, NbColonnesDécalageEntreLesTableaux)
Loop

'Aucune date trouvée
If NbColonnesDécalage = 0 Then
MsgBox "Aucune date trouvée en feuille " & .Name
Exit Sub
End If

'Copie du tableau de la date la plus ancienne
Application.ScreenUpdating = False

i = 4
j = 4
fin = .Range("B" & Rows.Count).Offset(0, NbColonnesDécalage).End(xlUp).Row

While (i <= fin)
.Range("B" + CStr(i) + ":" + "J" + CStr(i)).Offset(0, NbColonnesDécalage).Copy
.Range("L" + CStr(j)).Offset(0, NbColonnesDécalage).PasteSpecial Paste:=xlPasteAll
ThisWorkbook.Worksheets("feuil2").Range("B" + CStr(j)).PasteSpecial Paste:=xlPasteAll
i = i + 2
j = j + 1
Wend

Application.CutCopyMode = False
Application.ScreenUpdating = True

End With
End Sub



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

bonjour,

le nombre de tableau change tous les jours

le format des cellules date est Selection.NumberFormat = "m/d/yyyy

on fait la liste de date des tableaux ,on choisie la date pour la copie, et que ce soit le choix de la date qui lance la copie

concernant le poste du 28/10/2019 12h54 et celui du 20/10/2019 à 20h10 je viens de me rendre compte que je n'avait pas précisé que lors de la copie b4:J1018 en feuille trie en L4:t509 la taille des tableau diminuer de moitié parce qu’il faut supprime au moment du coller toutes les ligne qui ne son pas copier en L4:T509 et en feuille2 B4:J509 et de faite pourriez-vous m'indiquer comment il faut faire svp

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

merci de votre patience et de votre compréhension



Modifié par maheln le 29/10/2019 03:25
Publicité
Debrief
 Posté le 29/10/2019 à 06:46 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

je voudrai que la sélection du tableau à traite avec la macro trie (poste précédant) ce face en sélectionnant la date la plus anciennes en b3

on fait la liste de date des tableaux ,on choisie la date pour la copie, et que ce soit le choix de la date qui lance la copie

Tu fais un choix et tu m'expliques pourquoi tu t'amuses à changer de version toutes les 2 heures après 4 pages de sujet.

concernant le poste du 28/10/2019 12h54 et celui du 20/10/2019 à 20h10 je viens de me rendre compte que je n'avait pas précisé que lors de la copie b4:J1018 en feuille trie en L4:t509 la taille des tableau diminuer de moitié parce qu’il faut supprime au moment du coller toutes les ligne qui ne son pas copier en L4:T509 et en feuille2 B4:J509 et de faite pourriez-vous m'indiquer comment il faut faire svp

Ok, encore un changement. Donc il faut supprimer de B4:J1018 les lignes non copiées dans L4:T509. C'est à dire avoir exactement les 2 mêmes tableaux en B4:B509 et L4:T509 après copie ?

Voilà ce qu'on va faire. Tu réfléchis, puis tu confirmes tes dernières demandes. Et je vais attendre quelques jours avant de te répondre car entre temps tu auras changé d'avis. Et comme ça fait 4 pages que ça dure (un record !) on va réduire un peu le rythme.

Bonne journée.
D.

maheln
 Posté le 31/10/2019 à 22:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour ,

en CA lors de la copie de la feuille 2(via report feuille2) ,il faudrait avant de lancer report feuille2 ,vérifier si tous les nom en NDP son présent en feuille 2 et si un nom ne figure pas en feuille2 remplace les données qui auraient du être copier par des zéro ,car actuellement lorsque un nom en feuille 2 n'est pas présent ,rien n'est copier dans son emplacement et lors de la copie suivante l'emplacement vide est utilisé et tous ce décale . et t'il possible de faire cela ou autrement ? svp

pour vous répondre ,pour chaque copie d'un tableau de feuille stock ,il faut récupérai la date de chaque tableau ,en B3 pour le premiers tableau ,puis L3 pour pour le second et ainsi de suite ,une fois les date récupérai pouvoir en sélectionner une via une fenêtre (msgbox) qui va lancer la copie en feuille2.

en stock les tableaux que j'utilise pour la copie en feuille2 ,chaque jour j'ajoute 1 tableau à la suite des autres feuille stock ,pour chaque copie de l'un des tableau de la feuille stock, en feuille2 ,on copie les ligne 1,3,5,7,9,11 ..... 1018 du tableau b4:J1018 et quand ont les copie en feuille2, les lignes 1,3,5,7,9,11....... son copier sur les ligne 1,2,3,4,5,6 ...... de feuille2 B4:J509 ; le tableau b4:j1018 n'est jamais modifier

le format des cellules date est Selection.NumberFormat = "m/d/yyyy

merci de votre patience et de votre compréhension

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

Bonjour,

si un nom ne figure pas en feuille2 remplace les données qui auraient du être copier par des zéro

OK, c'est clair. Donc la zone Date répétée pour chaque nom n'a pas d'utilité puisque pour chaque ligne la date est la même et pourrait ne figurer qu'une seule fois en colonne H pour chaque ligne. Quitte à reporter le numéro dans la zone Nom avec le nom ou séparé en colonne I.

il faut récupérai la date de chaque tableau ,en B3 pour le premiers tableau ,puis L3 pour pour le second et ainsi de suite ,une fois les date récupérai pouvoir en sélectionner une via une fenêtre (msgbox) qui va lancer la copie en feuille2.

OK, c'est clair.

le tableau b4:j1018 n'est jamais modifier

OK, du coup je ne comprends pas ce qu'il faut supprimer dans la phrase d'un post précédent "parce qu’il faut supprime au moment du coller toutes les ligne qui ne son pas copier en L4:T509 et en feuille2 B4:J509"

Donc j'ignore cette phrase sauf si tu clarifies ce qu'il faut supprimer (dans quel tableau et quelles lignes précisément).

le format des cellules date est Selection.NumberFormat = "m/d/yyyy

Le traitement des dates en Excel est toujours compliqué. Il me faudrait un exemple de la feuille "stock" avec les dates pour que je vérifie leur nature exacte.

Il faut voir comment elles apparaissent en cellule (01/11/2019 pour le 1er novembre 2019 ?) quel est leur format sous Excel qui correspond en VBA à leur NumberFormatLocal.



Modifié par Debrief le 01/11/2019 14:02
maheln
 Posté le 01/11/2019 à 16:42 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

"en CA lors de la copie de la feuille 2(via report feuille2) ,il faudrait avant de lancer report feuille2 ,vérifier si tous les nom en NDP son présent en feuille 2 et si un nom ne figure pas en feuille2 remplace les données qui auraient du être copier par des zéro ,car actuellement lorsque un nom en feuille 2 n'est pas présent ,rien n'est copier dans son emplacement et lors de la copie suivante l'emplacement vide est utilisé et tous ce décale . et t'il possible de faire cela ou autrement ? svp"

oui pour la colonne H,pour les autres ça facilite la lecture

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

merci de votre patience et votre compréhension

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

bonjour ,

je voulait savoir si ma demande d'aide du poste précédant était possible svp

merci

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

Bonjour,

Patience..

D.

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

Un nouveau fichier -> https://cjoint.com/c/IKgtGzsvIRB

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

bonjour,

c'est exactement ça, je suis admiratif de ce qui est fait ...

si seulement j'avais vos compétence ...

est t'il possible d’empêcher la copie de feuille 2 si la date entre dépasse la date du jour ?

lorsque je lance la copie de feuille2 en feuille CA la première copie est rapide ,la deuxième copie et celles qui suivent son beaucoup plus longue ,je voudrai savoir si c'est due à la mise en mémoire tampon utilise pour faire les copie ou si cela est normal ?

pour effectuer les différant traitement du contenue de la feuille CA ,j'utilise une feuille renommer "RES" (qui n'est pas présente dans le classeur car elle contient des données sensible) est t'il possible de copier chaque groupe de la feuille CA sur la feuille RES copier transpose

en feuille CA ,toujours prendre la dernière ligne ,donc la ligne avec la date la plus récente ; sélectionner les 8 cellules du premier groupe et les copies feuille RES cellules C21:C28 puis le deuxième groupe de CA et les copies feuille RES D21:D28 puis le troisième groupe de CA et les copies feuille RES E21E28 et ainsi de suite selon le nombre de groupe pressant en feuille 2 .

je doit avouer que le faire groupe par groupe me prend énormément de temps

les améliorations apporter en feuille CA sont inattendue et j'avoue que je n'y avait pas pensé ,c'est tellement plus pratique ainsi ...

je vous remercie pour tout ce qui à était fait ,pour votre patience et votre compréhension

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

Bonjour,

lorsque je lance la copie de feuille2 en feuille CA la première copie est rapide ,la deuxième copie et celles qui suivent son beaucoup plus longue ,je voudrai savoir si c'est due à la mise en mémoire tampon utilise pour faire les copie ou si cela est normal ?

C'est normal car la 1ère ligne est déjà formatée et contient déjà les formules des 8 derniers chiffres pour tous les noms.
Pour les autres lignes, le temps supplémentaire est dû au formatage de la ligne pour tous les noms ainsi qu'à la copie des formules de la ligne précédente sur la ligne courante pour tous les noms.
Cependant j'ai amélioré la copie pour aller plus vite (Copie préalable des formats et formules de toutes la ligne au lieu de procéder nom par nom).

J'ai réduit les bordures de CA à un trait plus léger pour clarifier l'affichage. Les gros traits sont plus disgracieux.

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

Edit: Si vous savez que le copier / coller est un transpose, vous n'êtes pas tout à fait candide en Excel / VBA...

chaque groupe de la feuille CA sur la feuille RES copier transpose



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

bonjour,

la formule en C13 + le décalage référence va D13 ,de D13 + le decalage en E13 et ainssi de suite jusqu'au dernier groupe ,en c14 ,c15,c16,c17 c'est de la même façons

es ce qu'il est possible de faire cela par macro

oui effectivement ,le transpose peu être fait de divers façons

qu'elle gains de temps

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

merci de votre patience et de votre compréhension



Modifié par maheln le 10/11/2019 02:23
Debrief
 Posté le 10/11/2019 à 09:47 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

Pour que la formule en C13 soit copiable sur toute la zone il faut remplacer CA!I$2 par DECALER(CA!$I$2;0;(COLONNE()-COLONNE($C3)) * 16).

La formule en C13 qui était:
=SI(C3=0;"";SI(C3=1;SI(CA!I$2=0;"";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;"")))))))))))

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

Il suffit de placer cette formule en C13 et de l'étendre sur toute la zone manuellement.

J'ai toutefois ajouté un bouton en feuille RES pour créer les formules.

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

Edit: j'ai modifié l'apparence de la formule avec des retours ligne (vbLf, équivalent de <Alt> + Entrée en manuel) et des espaces d'indentation pour qu'elle apparaisse sous Excel de manière plus structurée:



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

bonjour,

j'ignoré pouvoir l’écrire de cette façons !

je pense que je me suis mal expliquer exemple poser en feuil RES cellules C13:C17 et D13:D17

donc C13 : C17 puis prise en compte du décalage pour chaque groupe de CA

dessolé de ma bêtise

merci de votre patience et de votre compréhension



Modifié par maheln le 10/11/2019 17:02
Debrief
 Posté le 10/11/2019 à 17:01 
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 dans ce que tu as dis précédemment qui est exactement ce que tu dis maintenant et qu'il me semble avoir compris.

Le décalage par groupe Nom CA est réalise par: DECALER(CA!$I$2;0;(COLONNE()-COLONNE($C3)) * 16)

C'est à dire que lorsqu'on passe de C13 à D13 on décale la référence de CA!$I$2 à CA!$Y$2 (soit 16 cellules plus à droite), et ainsi de suite pour chaque colonne:
Colonne C: décalage colonnes par rapport à $I$2 = 0 * 16 = 0 (COLONNE()-COLONNE($C3) = 0) ----> donc référence à
CA!$I$2
Colonne D: décalage colonnes par rapport à $I$2 = 1 * 16 = 16 (COLONNE()-COLONNE($C3) = 1) --> donc référence à CA!$Y$2
Colonne E: décalage colonnes par rapport à $I$2 = 2 * 16 = 32 (COLONNE()-COLONNE($C3) = 2) --> donc référence à CA!$AO$2
Etc..

De cette manière, comme indiqué précédemment, la formule est étirable / copiable en vertical et en horizontal.



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

bonjour,

oui le décalage CA!$I$ à CA!$Y$2(soit 16 cellules plus à droite), et ainsi de suite pour chaque colonne ok!

en c13

=SI(C3=0;"";SI(C3=1;SI(CA!I$2=0;"";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;"")))))))))))

en c14

=SI(C4=0;"";SI(C4=1;SI(CA!J$2=0;"";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;"")))))))))))

en c15

=SI(C5=0;"";SI(C5=1;SI(CA!K$2=0;"";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;"")))))))))))

en c16

=SI(C6=0;"";SI(C6=1;SI(CA!L$2=0;"";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;"")))))))))))

en c17

=SI(C7=0;"";SI(C7=1;SI(CA!M$2=0;"";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;"")))))))))))

ensuite pour chaque groupe on décale

merci de votre patience et de votre compréhension

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

Ça change ! One more time !

Dans le fichier que tu envoies dans ton message Posté le 10/11/2019 à 02:20 je trouve:

En C13:
=SI(C3=0;"";SI(C3=1;SI(CA!I$2=0;"";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;"")))))))))))

En C14:
=SI(C4=0;"";SI(C4=1;SI(CA!I$3=0;"";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;"")))))))))))

en C15:
=SI(C5=0;"";SI(C5=1;SI(CA!I$4=0;"";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;"")))))))))))

etc...

Et maintenant au lieu de faire varier la ligne 2, 3, 4, etc..., tu fais varier la colonne I, J, K.

Faut que je refasse la formule générique qui d'ailleurs comportait 2 défauts:
- aurait dû faire référence à $C13 et non $C3 (sans impact sur le résultat, car c'est la même colonne)
- ne faisait pas varier la ligne I$2, I$3 etc.. dont je n'avais pas remarqué la variation à cause du $ qui ne devrait pas s'y trouver et qui ne permet absolument pas une copie verticale !



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

D'ailleurs est-ce normal de n'avoir que 5 colonnes traitées en CA (colonne I$2 à M$2) alors qu'on a des séries de 8 chiffres ?

Tu confirmes que tes formules en vert du message Posté le 10/11/2019 à 17:39 sont celles que tu veux ?

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

En supposant que c'est bien ça... le décalage colonne en CA doit être composé du (décalage colonne en RES * 16) + décalage ligne en RES.

Ce qui donne la formule générique à placer en C13 et à étendre sur toute la zone:

=SI(C3=0;"";
SI(C3=1;
SI(DECALER(CA!$I$2;0;(COLONNE()-COLONNE($C13)) * 16 + LIGNE() - LIGNE(C$13))=0;"";
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;
"")))))))))))

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

Publicité
Pages : Début ... 2 3 [4] 5 6 ... Fin
[Début] Page 4 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