Répérer et extraire une série de données

Bonjour,

Mon problème est vraiment celui décrit dans mon premier poste. On m’a demandé mon fichier complet et cela semble plus complexe.

mais Si je reprends l’énoncé initiale de mon problème (voir premier poste)=

J'ai dans une colonne A plusieurs séries de données allant de 1 à 12 et parfois moins et dans une autre colonne B, d'autres données. J'aimerai dans une colonne C seulement isoler les séries allant de 1 à 12 de la colonne A et copier les données en face de cette série de la colonne B dans une colonne D, et encore dans une autre colonne (par exemple E, isolée les éléments ne constituant par la série 1 à 12 de la colonne A et dans la colonne F, mettre les données en face[/Barrer]

Maintenant si vous regardez uniquement dans l’onglet «Yield Correlation » et vous revenez à mon premier message.

La colonne A de mon premier message équivaut à la colonne H de l’onglet « yield correlation « .

La colonne B de mon premier message équivaut à la colonne B de l’onglet yield correlation.

La colonne D de mon premier message équivaut à la colonne R.

Et la colonne F de mon premier message correspond à la colonne AE à l’exception près que ce « ne sont pas tous les éléments ne constituant pas la série de 1 à 12 » mais ceux ne constituant pas la série et qui sont indiqués supérieur à 1 dans la colonne H de l’onglet « yield correlation ».

Dans l’onglet « yield irradiation », ne s’affiche pas l’équivalent des colonnes C et E présents dans l’exemple initiale, mais on pourrait le faire si nécessaire.

Salut tout le monde,

quelle affaire!

Comme souvent, je vais à contre-courant de l'orthodoxie excellienne mais considérant qu'Isabelle n'est pas responsable de ce fichier et n'a sans doute pas la possibilité voire même l'autorisation de modifier la structure de son fichier... je fais avec!

Il me manque deux neurones valides pour terminer le travail que j'ai effectué ainsi :

  • inscription des colonnes de dates en 'Provide' en [G], histoire de pouvoir les trier, enlever les doublons et en faire une nouvelle liste unique que je copie en 'Irr...'[B] et 'Yield'[B] où les formules font le reste ;
  • au passage, j'ai modifié les formules en 'Irr'[J] et 'Yield'[H] pour obtenir des infos utilisables car je ne trouvais pas mes jeunes avec la version initiale (à vérifier encore) ;
  • mes deux neurones me manquent dans la récolte des séries complètes ou incomplètes : c'est idiot, n'est-ce-pas?
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim tData, tExtract(), iRow%, iStart%, iSize%, sCol$, sCol1$, sCol2$
'
Cancel = True
Application.ScreenUpdating = False
'
For x = 1 To 4      'accumulation des dates en [G]
    sCol = Choose(x, "I", "N", "R", "V")
    tData = Range(sCol & "2:" & sCol & Range(sCol & Rows.Count).End(xlUp).Row).Value
    Range("G" & Range("G" & Rows.Count).End(xlUp).Row + 1).Resize(UBound(tData, 1), 1).Value = Range(sCol & "2:" & sCol & Range(sCol & Rows.Count).End(xlUp).Row).Value
Next
Range("G2:G" & Range("G" & Rows.Count).End(xlUp).Row).Sort key1:=Range("G2"), order1:=xlAscending, Orientation:=xlSortColumns   'tri
tData = Range("G2:G" & Range("G" & Rows.Count).End(xlUp).Row).Value
Range("G2:G" & Range("G" & Rows.Count).End(xlUp).Row).ClearContents
For x = 1 To UBound(tData, 1) - 1       'retrait des dates-doublons
    For y = x + 1 To UBound(tData, 1)
        If Right(tData(x, 1), 7) = Right(tData(y, 1), 7) Then tData(y, 1) = ""
    Next
Next
For x = 1 To UBound(tData, 1)           'nouvelle liste sans dates-doublons
    If tData(x, 1) <> "" Then _
        iIdx = iIdx + 1: _
        ReDim Preserve tExtract(iIdx): _
        tExtract(iIdx - 1) = tData(x, 1)
Next
For x = 1 To 2
    With Worksheets(IIf(x = 1, "Irr Correlation", "Yield Correlation"))
        .Range("B2:B" & .Range("B" & Rows.Count).End(xlUp).Row).ClearContents
        .Range("B2").Resize(UBound(tExtract), 1).Value = WorksheetFunction.Transpose(tExtract)      'affichage nouvelle liste dates
        .Range("B2:B" & .Range("B" & Rows.Count).End(xlUp).Row).NumberFormat = "[$-40c]mmm-yyyy"
        iRow = 0
        sCol = IIf(x = 1, "J", "H")
        sCol1 = IIf(x = 1, "U", "R")
        sCol2 = IIf(x = 1, "AI", "AE")
        .Range(sCol1 & "2:" & sCol1 & .Range(sCol1 & Rows.Count).End(xlUp).Row).ClearContents
        .Range(sCol2 & "2:" & sCol2 & .Range(sCol2 & Rows.Count).End(xlUp).Row).ClearContents
        For y = 2 To .Range(sCol & Rows.Count).End(xlUp).Row

        Next
    End With
Next
'
Application.ScreenUpdating = True

A+

Bonsoir

Merci. Je suis dans le train ce qui me compliqué un peu la tâche.

Je vais essayé de répondre aux deux questions.

en fait l onglet data to provide il y a, à côté des colonnes date, une colonne cachée qui spécifie la date sous format [année] & [mois] et qui me sert de repere pour classer les données dans les deux autres onglets.

Dans cet onglet data to provide il y a donc 4 bases de données qui proviennent de différentes sources. Tous sont des données mensuels mais les années différent et parfois ces bases sont plus ou moins complètes. Je souhaiterais éviter d aller chercher une date pour mettre une donnée en face.

Normalement tout se joue dans les autres onglets et l idée c est qu on est pas à toucher aux autres onglets

Pour la deuxieme question

Quand on regarde la colonne h, si on repére un 12, on sait qu on a une série complète. Alors on renseigne les dates se référant à cette série dans la colonne r.

Pour les données de cette colonne h qui ne font partie d une série de 12 mais dont la valeur est supérieur à 1. On renseigne alors la date se référant à ces données dans la colonne ae. Est ce plus claire ?

Le dernier tableau Excel que j avais joint présenté une peu mieux

Merci pour tout

Isabelle

Salut Isabelle,

MFerrand, jmd,

je persiste et signe quant à tes formules en 'Irr'[J] et 'Yield[H] inadéquates.

Regarde en 'Yield' : les 12 sont placés sur la ligne de JANVIER.

J'ai changé par ceci en 'Irr'...

=SI(H2>0;MOIS(B2);0)

... et en 'Yield' :

=SI(ET(D2>0;E2>0);MOIS(B2);0)

Cela dit, je ne pavoise pas car, après exécution de la macro de répartition des blocs de date, les formules battent la campagne, ne reconnaissant manifestement pas le format des dates... ou autre chose...

On aura besoin d'un expert ès dates!

Commençons par tester la répartition des dates.

La macro démarre sur un double-clic en 'Data to provide'.

        For y = 2 To .Range(sCol & Rows.Count).End(xlUp).Row
            If .Range(sCol & y).Value > 0 Then
                iStart = y
                iOK = IIf(.Range(sCol & y).Value = 1, 1, 0)
                iStep = .Range(sCol & y).Value - 1
                For Z = y To y + 11
                    iStep = iStep + 1
                    If .Range(sCol & Z).Value <> iStep Or (Z = .Range(sCol & Rows.Count).End(xlUp).Row And iStep < 12) Then _
                        iOK = 0: y = Z - 1: iSize = Z - iStart: _
                        Exit For
                    If iStep = 12 Then _
                        iOK = IIf(iOK = 1, 1, 0): y = IIf(iOK = 1, y + 11, Z): iSize = IIf(iOK = 1, 12, Z - iStart + 1): _
                        Exit For
                Next
                .Range(IIf(iOK = 1, sCol1, sCol2) & .Range(IIf(iOK = 1, sCol1, sCol2) & Rows.Count).End(xlUp).Row + 1).Resize(iSize, 1).Value = .Range("B" & iStart).Resize(iSize, 1).Value
            End If
        Next

A+

5dataimer.xlsm (270.68 Ko)

Bonjour Curulis,

Pour simplifier, je te propose qu'on se concentre que sur l'onglet Yield, car il est un tout petit peu plus complexe que l'autre onglet.

Pour revenir sur la colonne H, Il y avait en effet un problème avec la formule dans D. Je viens de corriger.

Dans le modèle que je viens de t'envoyer, cela devrait marcher.(j'ai fait en sorte d'avoir une année complete de données entre Avril 2005 et AVril 2006 dans les deux colonnes (D et E) alors, dans la colonne H de l'onglet Yield, le 12 tombe sur mars 2006 (H16).

Est-ce que là maintenant ca marche ?

Note que la formule dans première ligne H2 est différente de la formule H3.

Dans les modifications que tu proposes, en affichant le mois, cela ne me permet pas, me semble-t-il, de savoir si une série est complete ou non et de pouvoir isoler une série commençant d'avril à avril par exemple.

J'ai complété manuellement la colonne AE et R.

Bien à toi

Isabelle

4data.xlsm (273.53 Ko)

Bonjour Isabelle,

ma logique parfois trop carrée n'avait pas imaginé qu'une série de 12 mois pouvait commencer un autre mois que Janvier!

Comme la macro ne s'occupe que des chiffres de 1 à 12 en 'Irr'[J] ou 'Yield[H], elle fonctionnera sans souci avec tes formules initiales.

Pour rappel, la macro se déclenche sur un double-clic n'importe où en 'Data to provide'.

Par contre, alors que la répartition des blocs-dates est correcte, je ne m'explique pas pourquoi les formules en 'Irr'[V-W] et 'Yield'[AF-AG] ne fonctionnent plus, faussant complètement les données et les graphiques!

Je n'ai aucune idée de ce qui provoque ce dysfonctionnement et donc ne sais pas quoi faire pour terminer le travail. Désolé!

Appel aux cracks pour jeter un oeil! Merci pour Isabelle... et pour mon information personnelle!

A+

7dataimer.xlsm (259.82 Ko)

Bonjour Curuluis,

C'est vraiment super.

Un très très grand merci à toi !!! et à tout ceux qui ont planché pour trouver une solution.

En fait, je vais vous dire à quoi servent ces calculs.

Nous sommmes une entreprise de conseil dans les énergies renouvelables et on nous demande régulièrement de pouvoir donner ou prévoir des estimations de production à 1, 10, 15 et 20 ans.

Nous donnons ainsi plusieurs estimations (P50 : avec une probabilité de dépassement de 50%)., P 75 (avec une probabilité de 75%).

Lorsque les centrales sont en production (ce qui est le cas ici, nous faisons une estimation sur base de données opérationnelles), nous comparons des données d'irradiation provenant de mesures sur site (données des pyranomètres) et des données sateillitaires et nous nous basons sur les données de production déjà existantes pour prévoir les données de production des années futures.

L'objectif, c'est trouver une bonne correlation et limiter au maximum le degré d'incertitude.

Et ici mon travail étiat d'automatiser au maximum les feuilles de calcul.

Voilà. Encore une fois vraiment un très grand merci.

Bien à toi

Isabelle

Rechercher des sujets similaires à "reperer extraire serie donnees"