Macro report date début et date fin

Bonjour à tous,

J'ai un tableau dont je souhaiterais automatiser la colonne I et J.

En colonne A se trouve un numéro de ciblage

En colonne H se trouvent les dates de prestations correspondantes au ciblage

En colonne I je souhaiterais que la macro indique la date de début de prestation sur toutes les lignes du ciblage correspondant.

En colonne J je souhaiterais que la macro indique la date de fin de prestation sur toutes les lignes du ciblage correspondant.

Exemple pour mon ciblage 1, la date de début est le 07/02/2017 et la date de fin est le 12/02/2017.

Du coup la macro devrait indiquer, sur toutes les ligne du ciblage 1, en colonne H la date du 07/02/2017 et en colonne J la date du 12/02/2017.

On m'impose la présentation comme sur ce fichier test.

Sachant que ce tableau comporte des centaines de ciblages j'aimerais donc cette macro pour gagner du temps

Actuellement j'arrive plus ou moins a me débrouiller via des formules, mais ce n'est pas assez optimisé

Du coup j'en appelle a votre expertise

Merci par avance

Bonne journée à tous

Eno

Bonjour,

Quelles formules as-tu essayé d'utiliser ?

Les formules :

=MIN(SI($A$2:$A$54=A2;$H$2:$H$54))

=MAX(SI($A$2:$A$54=A2;$H$2:$H$54))

sont tout de même faciles et rapides à mettre en place et à étendre sur plusieurs centaines de lignes...

et une fois qu'elles ont joué leur rôle à écraser pour ne conserver que les valeurs.

NB- Ces formules sont matricielles !

Cordialement.

Bonjour,

Un début de réponse à étudier.

Cdlt.

Bonjour Mferrand,

alors je ne maîtrise malheureusement pas les formules matricielles

la formule classique que j'utilise est la suivante :

En I2 = =SI(A2<>A1;H2;I1)

En j2 = =SI(A2<>A3;H2;J3)

Et que j'étire vers le bas

Merci Jean-Eric pour la proposition en croisé dynamique

Je n'ai pas le niveau pour les TCD Il va vraiment falloir que je m'y mette

Mais pouvez me dire si le fait de mettre ces formules :

En I2 = =SI(A2<>A1;H2;I1)

En j2 = =SI(A2<>A3;H2;J3)

via macro pourrait être fiable et optimisé?

Une formule matricielle se tape comme une autre mais se valide par la combinaison de touches : Ctrl+Maj+Entrée, au lieu de simplement par Entrée.

C'est tout ce qu'il y a à savoir au niveau de la saisie d'une formule matricielle, cela ne nécessite pas un effort de compréhension hors du commun !

Cordialement.

Re,

Bonjour MFerrand,

Peux-tu me dire pour quelle raison, j'ai pondu une telle proposition?

Cdlt.

Bonjour

sinon en VBA a test mais pas parfait

Sub remplissage()
Dim prestation As Integer
DernLigne = Range("A" & Rows.Count).End(xlUp).Row
Premiereprestation = Sheets(1).Cells(2, 1).Value
Derniereprestation = Sheets(1).Cells(DernLigne, 1).Value

For traitement = Premiereprestation To Derniereprestation
Set plage = Sheets(1).Columns(1)
'PREMIERE LIGNE
    Set premiereligne = plage.Cells.Find(traitement, searchdirection:=xlNext)
'DERNIERE LIGNE
    Set derniereligne = plage.Cells.Find(traitement, searchdirection:=xlPrevious)
    'REMPLISSAGE
     Sheets(1).Range("I" & premiereligne.Row & ":I" & derniereligne.Row).Value = Sheets(1).Cells(premiereligne.Row, 8).Value
     Sheets(1).Range("J" & premiereligne.Row & ":J" & derniereligne.Row).Value = Sheets(1).Cells(derniereligne.Row, 8).Value

Next traitement

End Sub

cordialement

Une formule matricielle se tape comme une autre mais se valide par la combinaison de touches : Ctrl+Maj+Entrée, au lieu de simplement par Entrée.

C'est tout ce qu'il y a à savoir au niveau de la saisie d'une formule matricielle, cela ne nécessite pas un effort de compréhension hors du commun !

Cordialement.

Ah ok ben je vais étudier alors, merci

Re,

Re,

Bonjour MFerrand,

Peux-tu me dire pour quelle raison, j'ai pondu une telle proposition?

Cdlt.

ta proposition fonctionne chez moi

Il y a un problème que je n'ai pas vu?

Bonjour

sinon en VBA a test mais pas parfait

Sub remplissage()
Dim prestation As Integer
DernLigne = Range("A" & Rows.Count).End(xlUp).Row
Premiereprestation = Sheets(1).Cells(2, 1).Value
Derniereprestation = Sheets(1).Cells(DernLigne, 1).Value

For traitement = Premiereprestation To Derniereprestation
Set plage = Sheets(1).Columns(1)
'PREMIERE LIGNE
    Set premiereligne = plage.Cells.Find(traitement, searchdirection:=xlNext)
'DERNIERE LIGNE
    Set derniereligne = plage.Cells.Find(traitement, searchdirection:=xlPrevious)
    'REMPLISSAGE
     Sheets(1).Range("I" & premiereligne.Row & ":I" & derniereligne.Row).Value = Sheets(1).Cells(premiereligne.Row, 8).Value
     Sheets(1).Range("J" & premiereligne.Row & ":J" & derniereligne.Row).Value = Sheets(1).Cells(derniereligne.Row, 8).Value

Next traitement

End Sub

cordialement

Bonjour et merci pour ce code

Je vais m'exercer avec toute vos propositions

Merci beaucoup!!

bonne journée

Salut Jean-Eric !

Ma foi ! C'est une colle que tu me poses... Sans entrer dans de profondes investigations psychanalytiques, je dirais volontiers que c'est parce qu'il s'agit d'une solution très subtile... motivation que je valide volontiers en ce qui te concerne à l'examen global des solutions que tu as coutume de proposer.

Elle donne l'illusion de prendre un chemin détourné pour... fournir directement la solution !

Tu vas finir par me pousser à me mettre sérieusement aux TCD...

Bonne journée à toi !

Rechercher des sujets similaires à "macro report date debut fin"