Transposition et collage données

Sonia2020

XLDnaute Nouveau
Bonjour Le Forum

Je me présente Sonia, c'est la première fois que je viens sur ce forum. Je me suis inscrite afin de trouver une aide précieuse pour m'aider à avancer sur mon sujet de stage.
J'ai essayé de me débrouiller seule mais je suis tombée sur un problème auquel la maîtrise du VBA est nécessaire. Je ne sais pas du tout comment il faut faire.

J'aimerai vous expliquer mon problème et comment je souhaite que cela fonctionne afin que vous y voyez plus clair.

J'aimerai que le code VBA me fasse le nombre de boucle nécessaire en fonction du nombre de date différente dans la l'onglet Extraction en Colonne I.

1ère boucle de démarrage :
1ère étape : La macro va trier les données en fonction des dates de la plus ancienne saisie à la plus récente de l'onglet "Extraction" en colonne I.

2ème étape : Une fois triées, elle va faire une recherche V des données de la colonne C de l'onglet Données Analyse Charge par rapport aux données de l'onglet Paramètre en K, et copier coller les valeurs de la colonne L (onglet Paramètre) vers Colonne D (onglet Données Analyse Charge).

3ème étape : Sur (onglet Extraction), en colonne I prendre la première date saisie et la coller en B15 (onglet Data).

4ème étape : Une fois le collage en B15 Faite, il va prendre la valeur de la date en B16 (onglet Data) copier et coller en colonne A (démarrage en A2, onglet Transfert & Retard),

Puis en B (démarrage en B2, onglet Transfert & Retard) la charge à transférer qui se trouve en G (onglet Données Analyse Charge), la cellule à prendre se retrouve en fonction de la croix sur la colonne V du même onglet. S'il identifie une croix, alors il va sur la même ligne en G, copie et colle la valeur sur la colonne B (démarrage en B2, onglet Transfert & Retard)

Puis en C (démarrage en C2, onglet Transfert & Retard), le retard qui est égal au cumul de la charge en colonne F (onglet Données Analyse Charge),seulement les valeurs dont les dates (colonne J, onglet Données Analyse Charge) sont entre la date la plus ancienne (B18, onglet Data) et la date de saisie en (B18, onglet Data).

2ème boucle et jusqu`à la fin :
Quand il démarrera la boucle 2, la seule chose qui différenciera de la 1ère boucle c'est qu'au moment de la recherche V, il collera les données de la colonne M (onglet Paramètre) vers Colonne D (onglet Données Analyse Charge) au lieu des données en de la colonne L.

Autre chose : Il ne prendra pas la date de saisie suivante en colonne I (onglet Extraction) si elle est identique. Exemple, si à ma première boucle j'ai démarré avec la date du 12.01.2021, si la date suivante est au 12.01.2021, alors je passe à la suivante). Si j'ai 3 lignes avec une première date au 12.01.2021, puis celle du dessous avec une date en 12.01.2021, puis la suivante au 13.01.2021) il passera directement sur la date du 13.01.2021.

Je ne sais pas si mes explications sont claires, mais espère que quelqu'un du forum pourra comprendre et m'aider sur cette problématique.

Je vous remercie par avance pour votre aide précieuse !!

Sonia2020
 
Dernière édition:

Sonia2020

XLDnaute Nouveau
Re Rouge

Oui dans la colonne L il n'y a que des 20 car celui qui mettra la charge le fera manuellement. Et la colonne M juste a côté a une formule recherche V normalement qui prend les valeurs de la colonne I de l'onglet Données Analyse Charge

Sonia
 

Rouge

XLDnaute Impliqué
Bonjour,

Comment voulez-vous que je m'en sorte si vous ne me présentez pas la même chose que l'image de votre réponse en #11.

Je fais de gros efforts pour essayer de comprendre votre problème plutôt alambiqué, alors faites l'effort de votre côté de le rendre le plus clair et le plus compréhensible possible sinon on n'avancera pas.

Question concernant cette partie:
"2ème boucle et jusqu`à la fin :
Quand il démarrera la boucle 2, la seule chose qui différenciera de la 1ère boucle c'est qu'au moment de la recherche V, il collera les données de la colonne M (onglet Paramètre) vers Colonne D (onglet Données Analyse Charge) au lieu des données en de la colonne L."

Donc, à partir du 2ème passage, on écrase toutes les données de la colonne D provenant de la colonne L de "Paramètre" récupérées lors du premier passaget, par les nouvelles données de la colonne "M" de "Paramètre". C'est bien ça? où bien y a t-il des données qu'il ne faut plus toucher?

Puis, vous êtes-vous renseigné concernant cette partie?
"Puis en C (démarrage en C2, onglet Transfert & Retard), le retard qui est égal au cumul de la charge en colonne F (onglet Données Analyse Charge),seulement les valeurs dont les dates (colonne J, onglet Données Analyse Charge) sont entre la date la plus ancienne (B18, onglet Data) et la date de saisie en (B18, onglet Data)."

Pensez que je ne suis pas à votre place et que je me base uniquement sur vos écrits pour essayer de résoudre votre problème.

Cdlt
 

Sonia2020

XLDnaute Nouveau
Bonjour,

Comment voulez-vous que je m'en sorte si vous ne me présentez pas la même chose que l'image de votre réponse en #11.

Je fais de gros efforts pour essayer de comprendre votre problème plutôt alambiqué, alors faites l'effort de votre côté de le rendre le plus clair et le plus compréhensible possible sinon on n'avancera pas.

Question concernant cette partie:
"2ème boucle et jusqu`à la fin :
Quand il démarrera la boucle 2, la seule chose qui différenciera de la 1ère boucle c'est qu'au moment de la recherche V, il collera les données de la colonne M (onglet Paramètre) vers Colonne D (onglet Données Analyse Charge) au lieu des données en de la colonne L."

Donc, à partir du 2ème passage, on écrase toutes les données de la colonne D provenant de la colonne L de "Paramètre" récupérées lors du premier passaget, par les nouvelles données de la colonne "M" de "Paramètre". C'est bien ça? où bien y a t-il des données qu'il ne faut plus toucher?

Puis, vous êtes-vous renseigné concernant cette partie?
"Puis en C (démarrage en C2, onglet Transfert & Retard), le retard qui est égal au cumul de la charge en colonne F (onglet Données Analyse Charge),seulement les valeurs dont les dates (colonne J, onglet Données Analyse Charge) sont entre la date la plus ancienne (B18, onglet Data) et la date de saisie en (B18, onglet Data)."

Pensez que je ne suis pas à votre place et que je me base uniquement sur vos écrits pour essayer de résoudre votre problème.

Cdlt
Comment voulez-vous que je m'en sorte si vous ne me présentez pas la même chose que l'image de votre réponse en #11.

Je fais de gros efforts pour essayer de comprendre votre problème plutôt alambiqué, alors faites l'effort de votre côté de le rendre le plus clair et le plus compréhensible possible sinon on n'avancera pas.

Et bien enfaite ce que vous voyez en image de ma réponse #11, c'est ce qui devrait y avoir quand on lance la macro et que ce dernier traite sur les données du 12.01.2021 et quand il arrive sur le traitement des données du 14.01.2021. Je vous ai simplement mis ce qui devrait apparaître quand on lance la macro. Je l'ai fait manuellement à la main. Oui en effet, j'aurai du expliquer. Je suis désolée.

Question concernant cette partie:
"2ème boucle et jusqu`à la fin :
Quand il démarrera la boucle 2, la seule chose qui différenciera de la 1ère boucle c'est qu'au moment de la recherche V, il collera les données de la colonne M (onglet Paramètre) vers Colonne D (onglet Données Analyse Charge) au lieu des données en de la colonne L."

Donc, à partir du 2ème passage, on écrase toutes les données de la colonne D provenant de la colonne L de "Paramètre" récupérées lors du premier passaget, par les nouvelles données de la colonne "M" de "Paramètre". C'est bien ça? où bien y a t-il des données qu'il ne faut plus toucher?


Oui c'est exactement cela.


Puis, vous êtes-vous renseigné concernant cette partie?
"Puis en C (démarrage en C2, onglet Transfert & Retard), le retard qui est égal au cumul de la charge en colonne F (onglet Données Analyse Charge),seulement les valeurs dont les dates (colonne J, onglet Données Analyse Charge) sont entre la date la plus ancienne (B18, onglet Data) et la date de saisie en (B18, onglet Data)."

Cet apres midi j'ai un point avec mon tuteur, je vais essayer de voir plus clair avec lui. Je reviens vers vous quand j'ai la réponse.

Pensez que je ne suis pas à votre place et que je me base uniquement sur vos écrits pour essayer de résoudre votre problème

Oui vous avez raison, je suis vraiment navrée. Je tacherai de faire de mon mieux pour expliquer les choses.

Encore une fois, merci beaucoup pour votre aide.

Sonia
 
Dernière édition:

Rouge

XLDnaute Impliqué
Cet apres midi j'ai un point avec mon tuteur, je vais essayer de voir plus clair avec lui. Je reviens vers vous quand j'ai la réponse.
Ok, prenez bien soin de refaire toutes les actions et de relever tous les points susceptibles de ne pas être suffisamment compris par une tierce personne.

je ne pourrai vous répondre qu'en fin d'après-midi sinon demain.

Bonne journée
 

Sonia2020

XLDnaute Nouveau
Bonjour Rouge,

J'ai fait le point avec mon tuteur. Je posterai les nouvelles informations ce soir afin que vous puissiez y jeter un oeil. Il y a des choses à ajuster.

Je vous remercie pour votre patience. Et espère que vous puissiez toujours m'aider sur ce sujet

Merci beaucoup

Sonia
 

Sonia2020

XLDnaute Nouveau
Bonsoir Rouge

Comme tu peux le voir il se fait tard. J'ai eu une urgence qui ne m'a pas permis de poster les informations comme cité dans mon précédent post.

Je vais essayer de te fournir toutes les infos ce soir. Et si tu as toujours envie de m'aider je te serai éternellement reconnaissante.

Je te remercie encore une fois pour ta patience

Sonia
 

Sonia2020

XLDnaute Nouveau
Bonjour,

Voici le fichier avec les données nécessaires à la réalisation du code.

Je vous réexplique ce que je recherche :

Au total 1 boucle à faire.

Au premier passage de la boucle, voici ce que le code devra faire :

1ère étape : Trier les données par ordre de la plus ancienne à la plus récente (Colonne I, onglet Extraction)

2ème étape : Sur la colonne D (onglet Données Analyse Charge), faire une recherche V des valeurs de la colonne C (onglet Données Analyse Charge) et copier coller les valeurs de la colonne L (onglet Paramètre) sur cette colonne D.

3ème étape : Sur l'onglet (Data) en B15, coller la première date saisie (donc la plus ancienne) qui se trouve (onglet Extraction en colonne I).

4ème étape : Une fois faite, sur (onglet Transfert & Retard) copier coller les valeurs suivantes :
En colonne A (démarrage en A2), date de saisie US (onglet Data, cellule B16)

En colonne B (démarrage en B2), valeur de la charge à transférer qui se trouve (onglet Données Analyse Charge, colonne G). Pour trouver la valeur, il suffit d'aller sur la colonne W (onglet Données Analyse Charge), s'il y a une croix, alors aller sur la même ligne et prendre la valeur en G. Celle-ci sera la valeur à copier coller.

En colonne C (démarrage en C2), sera le retard de la charge planifiée. La valeur est obtenue en fonction des conditions de la colonne F et W (onglet Données Analyse Charge). Regarder la colonne W, s'il y a une croix alors aller sur la colonne F de cette même ligne. Si la valeur est supérieure à 0. Alors la valeur à mettre en colonne C (onglet Transfert & Retard) sera 0. Si inférieure ou égale à 0, alors il faut faire une recherche V de la valeur se trouvant en colonne C (onglet Données Analyse Charge), mais faire cette recherche V sur la valeur en ligne+1 en partant de la ligne où il y a la croix.
Exemple : si ma croix se trouve en cellule W10, la valeur à utiliser pour la recherche V n'est pas la valeur en C10 mais prendre la valeur en dessous soit C11 pour la recherche V.
Donc, la valeur à coller sur ma colonne C (Onglet Transfert & Retard) sera Le résultat trouvée en colonne L (onglet Paramètre) en fonction de la valeur cherchée en C (onglet Données Analyse Charge).

Puis pour le 2ème passage jusqu'à le dernier passage :

1ère étape : copier les valeurs de la colonne I (Onglet Données Analyse Charge) sur la colonne M (Onglet Paramètre) via une recherche V (la valeur a recherchée se fait en fonction de la colonne K onglet Paramètre), il faudra faire un copier coller d'un onglet à l'autre via une fonction recherche V (exemple de ma première cellule que j'ai faite avec une formule pour que vous voyez ce que je veux : =SIERREUR(RECHERCHEV(K2;'Données Analyse Charge'!C:I;7;FAUX);0)), ce que j'ai mis en formule sur cet onglet paramètre en colonne M c'est a faire en VBA.

2ème étape : Pour les valeurs de la colonne D (Onglet Données Analyse Charge) Au lieu de prendre les valeurs en colonne L comme au premier passage (onglet Paramètre) via une recherche V en fonction de la colonne C (Onglet Données Analyse Charge) , il faut prendre les valeurs en colonne M "qui représente la nouvelle capa" (onglet Paramètre).

3ème étape : Copier en B15 (onglet Data) la valeur en I (onglet Extraction), faire la même chose qu'au premier passage de la boucle mais prendre la date suivante (si la date suivante est identique à la précédente (différente de la cellule B15 Onglet Data) alors ne rien faire et continuer à aller vers la suivante tant qu'elle n'est pas différente. Si différente alors copier coller en B15 onglet Data cette nouvelle date).

4ème étape : Sur (onglet Transfert & Retard)
En colonne A, à la suite copier coller la valeur de la cellule B16 (onglet Data)

En colonne B à la suite, valeur de la charge à transférer qui se trouve (onglet Données Analyse Charge, colonne G). Pour trouver la valeur, il suffit d'aller sur la colonne W (onglet Données Analyse Charge), s'il y a une croix, alors aller sur la même ligne et prendre la valeur en G. La valeur à copier coller sera la valeur concernée en G (onglet Données Analyse Charge) + l'ancienne valeur de charge à transférer collée sur le précédent passage (elle se trouve dans l'onglet Transfert & Retard, colonne B). Exemple : Si à mon précédent passage, j'ai eu à 100 en colonne B, sur mon prochain passage, je fais 100+la nouvelle valeur de ce passage. J'aurai donc la valeur de transfert de charge précédente + la nouvelle.

En colonne C (onglet Transfert & Retard), faire la même chose que le 1er passage, mais si la valeur est égale ou inférieure à 0; sur ce deuxième passage Il faut additionner à la valeur trouvée en L (onglet Paramètre) la précédente valeur du retard de la charge planifiée trouvée et mise sur la colonne C (onglet Transfert & Retard).
Exemple : Si je suis inférieure ou égale à 0 en colonne F sur ma cellule concernée, alors je fais ma recherche V de ma colonne C (onglet Données Analyse Charge) (soit ligne+1 de la colonne C) pour avoir le résultat de ma colonne L (onglet Paramètre) et j'additionne cette valeur trouvée avec la valeur de retard de la charge planifiée trouvée lors de mon précédent passage de la boucle.

Une fois ce 2ème passage fini, je fais de même pour les autres jusqu'à la fin
Si j'ai 6 dates différentes dans ma colonne I (Onglet Paramètre) alors il y aura 6 passages à faire sur cette boucle..

J'espère que mes explications sont plus claires et plus précises que ma première explication du problème.

J'espère que cela soit possible pour vous de le faire. J'ai fait de mon maximum pour être clair. S'il vous reste des interrogations, n'hésitez pas à m'en faire part.

Je vous remercie par avance de votre aide précieuse

Sonia
 

Pièces jointes

  • Sonia2020_Transposition et collage données v1.xlsm
    231.2 KB · Affichages: 11

Rouge

XLDnaute Impliqué
Bonjour,

Déjà là, ce n'est pas clair
"En colonne C (démarrage en C2), sera le retard de la charge planifiée. La valeur est obtenue en fonction des conditions de la colonne F et W (onglet Données Analyse Charge). Regarder la colonne W, s'il y a une croix alors aller sur la colonne F de cette même ligne. "
Dans le nouveau fichier, la valeur "x" n'est pas en "W" mais en "V", Qu'en est-il réellement?

Ensuite:
'Si la valeur est supérieure à 0. Alors la valeur à mettre en colonne C (onglet Transfert & Retard) sera 0. Si inférieure ou égale à 0, alors il faut faire une recherche V de la valeur se trouvant en colonne C (onglet Données Analyse Charge), mais faire cette recherche V sur la valeur en ligne+1 en partant de la ligne où il y a la croix.
Exemple : si ma croix se trouve en cellule W10, la valeur à utiliser pour la recherche V n'est pas la valeur en C10 mais prendre la valeur en dessous soit C11 pour la recherche V.
Donc, la valeur à coller sur ma colonne C (Onglet Transfert & Retard) sera Le résultat trouvée en colonne L (onglet Paramètre) en fonction de la valeur cherchée en C (onglet Données Analyse Charge).'

"mais faire cette recherche V sur la valeur en ligne+1": cela signifie qu'on prend la valeur suivante (ici C11), donc plus besoin de faire une recherchev puisque on y est dessus. Pour moi ce n'est pas clair du tout.


Répondez-moi à ces 2 questions, de ce temps je continue la suite.

Cdlt
 

Sonia2020

XLDnaute Nouveau
Bonjour,

Déjà là, ce n'est pas clair
"En colonne C (démarrage en C2), sera le retard de la charge planifiée. La valeur est obtenue en fonction des conditions de la colonne F et W (onglet Données Analyse Charge). Regarder la colonne W, s'il y a une croix alors aller sur la colonne F de cette même ligne. "
Dans le nouveau fichier, la valeur "x" n'est pas en "W" mais en "V", Qu'en est-il réellement?

Ensuite:
'Si la valeur est supérieure à 0. Alors la valeur à mettre en colonne C (onglet Transfert & Retard) sera 0. Si inférieure ou égale à 0, alors il faut faire une recherche V de la valeur se trouvant en colonne C (onglet Données Analyse Charge), mais faire cette recherche V sur la valeur en ligne+1 en partant de la ligne où il y a la croix.
Exemple : si ma croix se trouve en cellule W10, la valeur à utiliser pour la recherche V n'est pas la valeur en C10 mais prendre la valeur en dessous soit C11 pour la recherche V.
Donc, la valeur à coller sur ma colonne C (Onglet Transfert & Retard) sera Le résultat trouvée en colonne L (onglet Paramètre) en fonction de la valeur cherchée en C (onglet Données Analyse Charge).'

"mais faire cette recherche V sur la valeur en ligne+1": cela signifie qu'on prend la valeur suivante (ici C11), donc plus besoin de faire une recherchev puisque on y est dessus. Pour moi ce n'est pas clair du tout.


Répondez-moi à ces 2 questions, de ce temps je continue la suite.

Cdlt
Bonjour Rouge

Réponse a la première question :
Oui je viens de voir que c'est en V et non en W. J'ai supprimé une colonne en oubliant que cela a décalé en V le point d'arrêt. Oui c'est bien en V la colonne

Réponse a la deuxième question :
La formule de la colonne V n'a pas été tiré pour la cellule V70 et V71. J'avais fait un teste manuel.
En tirant cette formule, la croix sera bien sur la valeur du point darret c'est a dire, date de saisie d'analyse + 1 jour. Soit en référence de la cellule B6 de l'onglet data.
On va bien prendre la cellule de la colonne C en fonction de la date d'analyse saisie (celle que l'on traite actuellement)

Merci de votre aide

Sonia
 

Rouge

XLDnaute Impliqué
Bonjour,

Je vous retourne le code avec l'avancement actuel.
Vu la quantité d'opérations à exécuter, j'ai bien peur de ne plus m'y retrouver, alors pour faire des essais qui collent à la réalité, pourriez me retourner un fichier avec des valeurs réelles et avec les résultats attendus de telle sorte que je puisse voir si je suis dans les clous ou si j'ai beaucoup de modifications à faire et surtout où je dois les faire.
J'ai mis le maximum de commentaires dans le code afin que vous puissiez suivre son déroulement en pas à pas, ce qui pourrait m'aider par la suite si vous détecter des anomalies.

VB:
Option Explicit
Option Compare Text

Sub Traitement()
    'Déclaration des variables
    Dim f1 As Worksheet, f2 As Worksheet, f3 As Worksheet, f4 As Worksheet, f5 As Worksheet, f6 As Worksheet, f7 As Worksheet
    Dim DerLig_f1 As Long, DerLig_f2 As Long, DerLig_f3 As Long, DerLig_f4 As Long, DerLig_f5 As Long, DerLig_f6 As Long, DerLig_f7 As Long
    Dim i As Long
    Dim DateSaisie As Double, DateNew As Double
    Dim x As Range, d As Range
    Dim FirstPassageOk As Boolean, SndPassageOk As Boolean
    Set f1 = Sheets("Données Analyse Charge")
    Set f2 = Sheets("Data")
    Set f3 = Sheets("Transfert & Retard")
    Set f4 = Sheets("Bilan")
    Set f5 = Sheets("Extraction")
    Set f6 = Sheets("Liste délai court")
    Set f7 = Sheets("Paramètre")
    
    Application.ScreenUpdating = False 'Evite les scintillements de l'écran et accélère l'exécution du programme
    DerLig_f7 = f7.Range("A" & Rows.Count).End(xlUp).Row 'dernière ligne de la feuille "Paramètre"
    
    '**************************************************************************************************************************************************
    f3.Range("A2:C" & f3.Range("A" & Rows.Count).End(xlUp).Row + 1).ClearContents 'efface les précédents résultats de la feuille ""Transfert & Retard"
    f5.Select 'on se positionne sur la feuille "Extraction"
    
    '**************************************************************************************************************************************************
    '1ère étape :  trier les données en fonction des dates de la plus ancienne saisie à la plus récente de l'onglet "Extraction" en colonne I.
    DerLig_f5 = f5.Range("A" & Rows.Count).End(xlUp).Row 'dernière ligne de la feuille "Extraction"
    f5.Range("A2:M" & DerLig_f5).Sort [I1], 1 'filtrage par date
    
    DerLig_f1 = f1.Range("A" & Rows.Count).End(xlUp).Row 'dernière ligne de la feuille "Données Analyse Charge"
    FirstPassageOk = False 'Le premier passage n'a pas encore eu lieu
    SndPassageOk = False 'Le deuxième passage n'a pas encore eu lieu
    
    '**************************************************************************************************************************************************
    For i = 2 To DerLig_f5 'De la ligne 2 à la dernière ligne de la feuille "Extraction"
        'feuille "Paramètre", on applique la formule en colonne M et on fige les valeurs pour pouvoir les exploiter par la suite
        f7.Range("M2:M" & DerLig_f7).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-2],'Données Analyse Charge'!C[-10]:C[-4],7,FALSE),0)"
        f7.Range("M2:M" & DerLig_f7).Value = f7.Range("M2:M" & DerLig_f7).Value
        '2ème étape : Une fois triées, elle va faire une recherche V des données de la colonne C de l'onglet Données Analyse Charge par rapport aux données _
            de l'onglet Paramètre en K, et copier coller les valeurs de la colonne L (onglet Paramètre) vers Colonne D (onglet Données Analyse Charge).
       If FirstPassageOk = False Then 'si c'est le premier passage
            'on traite la première ligne de "Extraction"
            f1.Range("D5:D" & DerLig_f1).FormulaR1C1 = "=VLOOKUP(RC[-1],Paramètre!C[7]:C[9],2,FALSE)" 'on récupère les valeurs de la colonne L de "Paramètre" avec une rechercheV
        ElseIf SndPassageOk = False Then 'Si ce n'est plus le premier passage, on traite les lignes suivantes de "Extraction"
            '2ème passage
                '1ère étape : copier les valeurs de la colonne I (Onglet Données Analyse Charge) sur la colonne M (Onglet Paramètre) via une recherche V (la valeur à _
                    rechercher se fait en fonction de la colonne K onglet Paramètre), il faudra faire un copier coller d'un onglet à l'autre via une fonction recherche V
            f7.Range("M2:M" & DerLig_f7).FormulaR1C1 = "=IFERROR(VLOOKUP(RC11,'Données Analyse Charge'!C3:C9,7,FALSE),0)" 'Copie dans M de "Paramètre" avec une rechercheV
            f1.Range("D5:D" & DerLig_f1).FormulaR1C1 = "=VLOOKUP(RC3,Paramètre!C11:C13,2,FALSE)" 'on récupère les valeurs de la colonne M de "Paramètre" dans "D" de "Données Analyse Charge"
            SndPassageOk = True
        End If
        'f1.Range("D5:D" & DerLig_f1).Value = f1.Range("D5:D" & DerLig_f1).Value 'on remplace les formules par leurs valeurs
        
        '3ème étape : Sur (onglet Extraction), en colonne I prendre la première date saisie et la coller en B15 (onglet Data).
        If f5.Cells(i, "I") <> f5.Cells(i - 1, "I") Then 'si les dates sont différentes
            f2.Range("B15").Value = f5.Cells(i, "I").Value ' on copie la date traitée de "Extraction" vers B15 de "Data"
            
            '4ème étape : Une fois le collage en B15 Faite, il va prendre la valeur de la date en B16 (onglet Data) copier et coller en colonne A (démarrage en A2, onglet Transfert & Retard),
            DerLig_f3 = f3.Range("A" & Rows.Count).End(xlUp).Row + 1 'dernière ligne de la feuille "Transfert & Retard"
            f3.Cells(DerLig_f3, "A") = f2.Range("B16").Value 'Copie de la date saisie en B16 de "Data"
            DateSaisie = f3.Cells(DerLig_f3, "A") 'Attribution de la date à la variable "DateSaisie"
            
            'Puis en B (démarrage en B2, onglet Transfert & Retard) la charge à transférer qui se trouve en G (onglet Données Analyse Charge), la cellule _
                à prendre se retrouve en fonction de la croix sur la colonne V du même onglet. S'il identifie une croix, alors il va sur la même ligne en G, _
                copie et colle la valeur sur la colonne B (démarrage en B2, onglet Transfert & Retard)
            If FirstPassageOk = False Then 'si c'est le premier passage
                Set x = f1.Range("C1:C" & DerLig_f1).Find(DateSaisie, LookIn:=xlValues, lookat:=xlWhole) 'on recherche la date saisie
                If Not x Is Nothing Then 'Si la date est trouvée
                    If f1.Cells(x.Row, "V") = "x" Then 'on regarde s'il y a un "x" dans la colonne "V"
                        f3.Cells(DerLig_f3, "B") = f1.Cells(x.Row, "G") 'on copie en "B" la valeur trouvée en "G"
                        'En colonne C (démarrage en C2), sera le retard de la charge planifiée. La valeur est obtenue en fonction des conditions de la colonne F et W _
                            (onglet Données Analyse Charge). Regarder la colonne V, s'il y a une croix alors aller sur la colonne F de cette même ligne.
                        If f1.Cells(x.Row, "F") > 0 Then 'Si la valeur est supérieure à 0. Alors la valeur à mettre en colonne C (onglet Transfert & Retard) sera 0.
                            f3.Cells(DerLig_f3, "C") = 0
                        ElseIf f1.Cells(x.Row, "F") <= 0 Then 'Si inférieure ou égale à 0, alors il faut faire une recherche V de la valeur se trouvant en colonne C (onglet Données Analyse Charge), _
                            mais faire cette recherche V sur la valeur en ligne+1 en partant de la ligne où il y a la croix.
                            DateNew = f2.Range("B6") 'Nouvelle date à rechercher, équivaut à B6 de la feuille "Data"
                            Set x = f1.Range(f1.Cells(x.Row, "C"), f1.Cells(DerLig_f1, "C")).Find(DateNew, LookIn:=xlValues, lookat:=xlWhole)
                            f3.Cells(DerLig_f3, "C") = f1.Cells(x.Row, "D") 'la valeur à coller sur ma colonne C (Onglet Transfert & Retard) sera Le résultat trouvée en colonne L (onglet Paramètre) en fonction de la valeur cherchée en C (onglet Données Analyse Charge).
                        End If
                    End If
                End If
            ElseIf FirstPassageOk = True Then 'si ce sont les passages suivants
                Set x = f1.Range("C1:C" & DerLig_f1).Find(DateSaisie, LookIn:=xlValues, lookat:=xlWhole) 'on recherche la date saisie
                If Not x Is Nothing Then 'Si la date est trouvée
                    If f1.Cells(x.Row, "V") = "x" Then 'on regarde s'il y a un "x" dans la colonne "V"
                        f3.Cells(DerLig_f3, "B") = f1.Cells(x.Row, "G") + f3.Cells(DerLig_f3 - 1, "B") 'on copie en "B" la valeur trouvée en "G" + l'ancienne valeur de charge
                        If f1.Cells(x.Row, "F") > 0 Then 'Si la valeur est supérieure à 0. Alors la valeur à mettre en colonne C (onglet Transfert & Retard) sera 0.
                            f3.Cells(DerLig_f3, "C") = 0
                        ElseIf f1.Cells(x.Row, "F") <= 0 Then 'Si inférieure ou égale à 0, alors il faut faire une recherche V de la valeur se trouvant en colonne C (onglet Données Analyse Charge), _
                            mais faire cette recherche V sur la valeur en ligne+1 en partant de la ligne où il y a la croix.
                            DateNew = f2.Range("B6") 'Nouvelle date à rechercher, équivaut à B6 de la feuille "Data"
                            Set d = f1.Range(f1.Cells(x.Row, "C"), f1.Cells(DerLig_f1, "C")).Find(DateNew, LookIn:=xlValues, lookat:=xlWhole)
                            If Not d Is Nothing Then
                                f3.Cells(DerLig_f3, "C") = f1.Cells(d.Row, "D") + f3.Cells(DerLig_f3 - 1, "C") 'la valeur à coller sur ma colonne C (Onglet Transfert & Retard) + l'ancienne valeur de charge
                            End If
                        End If
                    End If
                End If
            End If
        End If
        FirstPassageOk = True 'le premier passage à eu lieu, donc lors des prochains passages on exécutera les lignes suivantes
    Next i

    f7.Range("M2:M" & DerLig_f7).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-2],'Données Analyse Charge'!C[-10]:C[-4],7,FALSE),0)" 'réécriture des formules en colonne M de "Paramètre"
    f3.Select ' affichage de la feuille "Transfert & Retard"
    
    '**************************************************************************************************************************************
    'Libération de la mémoire
    Set d = Nothing
    Set x = Nothing
    Set f1 = Nothing
    Set f2 = Nothing
    Set f3 = Nothing
    Set f4 = Nothing
    Set f5 = Nothing
    Set f6 = Nothing
    Set f7 = Nothing
End Sub
Cdlt
 

Pièces jointes

  • Sonia2020_Transposition et collage données_2.xlsm
    258.5 KB · Affichages: 4

Sonia2020

XLDnaute Nouveau
Bonjour Rouge,

Tout d'abord, je vous remercie énormément pour votre aide, je ne sais pas quoi dire a part merci merci !!!

Je vais essayer de vous faire parvenir les informations de votre demande aujourd'hui.
Si ce n'est pas le cas, vous aurez les informations demain dans la matinée si cela est toujours bon pour vous.

Merci beaucoup !!!!

Sonia
 

Sonia2020

XLDnaute Nouveau
Bonjour Rouge

Voici en PJ le fichier avec les informations demandées.
J'ai fait une exécutions en pas à pas, il n'y a aucune données qui apparaissent sur les colonnes B et C de l'onglet Transfert & Retard, mais je pense que vous avez fait cela exprès. En tout cas les valeurs de la colonne A correspondent.

Je vous ai ajouté une explication illustrée aussi pour que vous compreniez pourquoi j'ai cela en résultat.

J'espère que vous arriverez à vous retrouver.

Je vous remercie pleinement pour votre aide.

En espérant avoir répondu à vos demandes.

Merci ^^

Sonia
 

Pièces jointes

  • Sonia2020_Transposition et collage données_2.xlsm
    239.8 KB · Affichages: 3
  • Explication Test.xlsx
    13.2 KB · Affichages: 4
Dernière édition:

Rouge

XLDnaute Impliqué
Bonjour,

Il y a quelque chose que je n'arrive pas à comprendre,
-lors du premier passage, la date du 19/10/202 est copiée en B15 de "Data" et un "x" apparaît en face cette date dans la colonne "V" de "Données Analyse Charge"

-lors du 2ème passage, il faut bien copier la nouvelle date trouvée (ici le 20/10/2020/) dans la cellule B15 de "Data", NON?
Puis on recherche un "x" dans la colonne "V" de "Données Analyse Charge", cette fois -ci le "x" n'est plus en face la date, mais face à la journée du 21/10/2020, soit au-dessus. n'est-ce pas là le problème?
 

Sonia2020

XLDnaute Nouveau
Bonjour,

Il y a quelque chose que je n'arrive pas à comprendre,
-lors du premier passage, la date du 19/10/202 est copiée en B15 de "Data" et un "x" apparaît en face cette date dans la colonne "V" de "Données Analyse Charge"

-lors du 2ème passage, il faut bien copier la nouvelle date trouvée (ici le 20/10/2020/) dans la cellule B15 de "Data", NON?
Puis on recherche un "x" dans la colonne "V" de "Données Analyse Charge", cette fois -ci le "x" n'est plus en face la date, mais face à la journée du 21/10/2020, soit au-dessus. n'est-ce pas là le problème?

Bonjour Rouge

Pour la date du 19.10.2020, la croix n'est pas en face, je viens de revoir le fichier, la croix est bien en 20.10.2020

1603706567972.png

1603706617532.png


Pour le deuxième passage, date saisie en 20.10.2020 en B15 (onglet data) c'est bien cela. la croix doit bien tomber sur la date du 21.10.2020 (date us 20201021)

Je ne vois pas l'erreur, pour le premier passage. J'ai testé et sur le fichier que je vous ai fourni, la croix tombe bien en date du 20.10.2020
Est-ce un bug de votre côté ?

Merci de votre aide

Sonia
 

Discussions similaires