Copie de valeurs en fonction des dates

  • Initiateur de la discussion Initiateur de la discussion brigadero
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

brigadero

XLDnaute Junior
Bonjour,

Mon pb est le suivant :

J'ai juste besoin de projeté des valeurs de l'année 2009 sur l'année 2011 en prenant en compte les consos des différents jours. Par exemple la conso du 1er lundi 2009 doit être égale à celle du 1er lundi 2011, le 2e à celle du 2ème...

Il y'a donc deux étapes :

-La premiere faire un simple "transfert" de valeurs d'une page à l'autre, en faisant matcher la conso du 1er janvier ac celle du 1er janvier...que je n'arrive pas à faire car (et ce doit etre comme ca) la date de la feuille source ne commence pas en "A1" alors que pr la feuille "projection" Si.

Il faudrait faire par ex (voir mon code mais qui ne marche pas)
If jour et le mois de la rangé A de la feuille Proj = jour et mois de la rangée A de la feuille source Then
Worksheets("Projection". Range("B" & i) . value)) = Worksheets("Source".Range("B" & i) . value))

- Et donc la deuxieme de faire un décalge de conso en fonction des journée de la semaine.

J'espere avoir été clair!

Merci bien.
 

Pièces jointes

Re : Copie de valeurs en fonction des dates

Bonjour,
Vraiment besoin d'une macro ?
En B2
Code:
=SOMMEPROD((MOIS.DECALER($A366;-24)=Source!$A$10:$A$374)*(Source!$B$10:$B$374))
ou
Code:
=INDEX(Source!$B$10:$B$374;EQUIV(MOIS.DECALER($A2;-24);Source!$A$10:$A$374;0))
Le décalage du nb mois (-24) peut s'obtenir par
Code:
DATEDIF(Source!$A$10;$A$2;"m")*-1)
Et tirer vers le bas (necessite utilitaire d'analyse)
A+
kjin
 
Re : Copie de valeurs en fonction des dates

Merci beaucoup à vous trois.
Camarche pas c'est surtout ce que tu as fait qui va m'aider, car je dois tout faire en vba. maintenant ce qu'il faut que je fasse c'est ce qu' a fais denis, mais en code.
Il ne faut rien des mes cases, et donc le code intégrerait un calendrier (ou pas besoin?) et décalerait la conso comme tu as fais denis, lundi ac lundi...et j'avais oublié de vous préciser, d'ailleurs c'est pourquoi kjin je ne peux pas utiliser ce que tu as fait, c'est qu'il peut y'avoir un historique de plusieurs années et pas forcément du 1er janvier au 31 décembre, cela peut etre du 11Octobre au 12 décembre de l'année d'après, et pareil pour la projection.
C'est pourquoi il faut que le code puisse prendre le 1er lundi du mois par ex et le coller ac le mm premier lundi du mois de l'année d'après. ( et tout cela en vba.

Merci encore à vous! et si vous avez des questions n'hésitez pas.
 
Re : Copie de valeurs en fonction des dates

Bonjour Kjin,

Pour le transfert sur une année, les formules , pas de problème, si l'on procéde sur plusieurs années, le tirage de formule commence à faire lourd.

Et par habitude d'utilisation grand public, je me méfis beaucoup de la volatibilité des formules, et bien sur , personne ne touche jamais à rien , mais des lignes de formules ont disparues.

Mais très juste sinon , reste à savoir la durée de vie de cette "Application" et pour le maquettage tu as raison c'est beaucoup plus rapide.

c'est surtout à Brigadero de nous dire se qu'il préfére
 
Re : Copie de valeurs en fonction des dates

Re bonjour le fil
essais ce code

Sub mois()
Dim Derligne, Derligne2
With ThisWorkbook.Sheets("Source")
Derligne = .Range("A65536").End(xlUp).Row
For i = 1 To Derligne
If Format(.Range("A" & i), "dddd") = "lundi" Then
If i = 10 Then Stop
e = Format(.Range("A" & i), "dddd-mm")
Derligne2 = ThisWorkbook.Sheets("Projection").Range("A65536").End(xlUp).Row
For ii = 1 To Derligne2
If Format(ThisWorkbook.Sheets("Projection").Range("A" & ii), "dddd-mm") = e Then
For iii = ii To Derligne2
ThisWorkbook.Sheets("Projection").Range("B" & iii) = .Range("B" & i)
i = i + 1
If i = Derligne Then Exit Sub
Next
End If
Next
End If
Next
End With
End Sub

bon courage et à +
Denis
 
Re : Copie de valeurs en fonction des dates

Comme je vous l'ai dis j'ai besoin de tout en code vba...
Je pense à qq chose de la forme :

For i = 1 to 374

For j = 1 to 7

if Worksheets("Projection").jsemRange("A" & i).Value = Worksheets("source").jsemRange("A" & i ).Value Then

Worksheets("Projection").range ("B" & i).value = Worksheets("Source").range ("B" & i).value
(il va y'avoir surement un pb car les lignes ne commencent pas au mm niveau)
end if

next j

j = j+7

next

Mm si c'est faux cela peut vous donner une idée, je ne suis pas encore un expert de vba!

Merci d'éclairer ma lanterne
 
Re : Copie de valeurs en fonction des dates

Merci ca marche nikel!
Par contre du coup je n'ai plus besoin du code de "CamarchePas"!
et il y'a un pti pb je n'ai pas la transposition du samedi et dimanche 1er et 2 janvier, ni du vendredi et samedi 30 et 31 décembre.

Et une derniere petite chose, tu pourrais me l'expliquer car je t'avou que je n'y comprends pas grand chose...ca n'a pas du tt la mm forme que ce que je vous avais proposé!!
 
Re : Copie de valeurs en fonction des dates

re,
il y a un autre souci, c'est qu'il prend le premier lundi qu'il trouve et non pas le premier du mois.
je vois et reposte demain si pas d'autres réponses
à +
Denis
 
Re : Copie de valeurs en fonction des dates

Voici mon doc avancé, j'ai rajouté jours fériés et ponts car je dois aussi en tenir compte.
Modifier les consos des anciens jours fériés qui ne sont plus (pacques ascension pentecote) et modifiers les consos des nouveaux.

Si qqn a une piste, je repete que tout doit etre en vba!

Merci
 

Pièces jointes

Re : Copie de valeurs en fonction des dates

Bonjour à vous,

Tout d'abord avez-vous du nouveau?

Sinon "CamarchePas" pourrait-tu me commenter un peu ton code stp?

Surtout :

Pointeur = 0
Do
Lecture = Range("source!A" & Pointeur + DébutSource).Value
If Left(Range("Projection!A" & Pointeur + DébutCible), 5) = Left(Lecture, 5) Then
Range("Projection!B" & Pointeur + 2) = Range("source!B" & Pointeur + DébutSource).Value

A quoi sert le pointeur?

Et tu as crée un fonction décale avec :

Décale = Début - DébutCible

Penses tu que l'on peut en faire qq chose pr le décalage?

Merci ++
 
Re : Copie de valeurs en fonction des dates

Bonjour,
'Pointeur va nous servir comme variable commune pour un déplacement identique dans les 2 onglet
Pointeur = 0
'Début de boucle
Do
'Chargement de la variable Lecture avec la valeur de la feuille source cellule de début + le déplacement commun soit au premier passage le début de la table
Lecture = Range("source!A" & Pointeur + DébutSource).Value
'Test si les 5 caracteres de gauche de la cellule cible sont identiques avec les 5 de la cellule source
If Left(Range("Projection!A" & Pointeur + DébutCible), 5) = Left(Lecture, 5) Then
Si Oui transfert de la valeur de la cellule B et ligne en cours source vers la cellule cible
Range("Projection!B" & Pointeur + 2) = Range("source!B" & Pointeur + DébutSource).Value

A quoi sert le pointeur?

Et tu as crée un fonction décale avec :

Décale = Début - DébutCible

pour le reste , je te reprends ce soir car là pas disponible.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
582
Retour