Passage de colonne en ligne pour traitement horaire

Bonjour,

C'est mon premier message sur ce forum, j'espère donc que ma demande sera assez claire

J'utilise une feuille de calcul excel qui fait des traitements liés à des moyennes horaires.

Certains des fichiers reçus en entrée de cette feuille de calcul nécessitent un traitement pour être pris en compte de manière automatique.

Je n'ai pas réussi à faire ce traitement via des fonctions excel (fonction DECALER par exemple), si par conséquent vous pouvez me proposez une solution, elle sera la bienvenue.

Chaque fichier concerne une année entière avec des données au pas 10mn, on a donc environ 50000 lignes par fichier.

La feuille de calcul utilise un traitement en ligne.

La cellule D1 contient le point du pas horaire 00h00mn du 1er janvier

La cellule E1 contient le point du pas horaire 00h10mn du 1er janvier

La cellule I1 contient le point du pas horaire 00h10mn du 1er janvier

La cellule D2 contient le point du pas horaire 01h00mn du 1er janvier

etc...

Les fichiers posant problème utilisent un traitement en colonne et non en ligne. Ils contiennent les informations suivantes :

colonne A : date

Colonne B: heure au pas 10mn

Colonne C : la valeur à traiter

Je souhaiterais donc pour la mise en forme de ces fichiers d'entrée que les celulles suivantes soient traitées avec une formule que je pourrais incrémenter sur l'ensemble des 6 colonnes utilisées :

Cellule D1 = cellule C1, c'est à dire le 1er pas horaire de la 1ère heure

Cellule E1 = cellule C2

Cellule F1 = cellule C3

Cellule G1 = cellule C4

Cellule H1 = cellule C5

Cellule I1 = cellule C6, c'est à dire le 6ème pas horaire de la 1ère heure

Ensuite on continue les traitement à partir de la ligne 2

Cellule D2 = cellule C7, c'est à dire le 1er pas horaire de la 2ème heure

Cellule I2 = cellule C12, c'est à dire le 6ème pas horaire de la 2ème heure

Ensuite on continue les traitement à partir de la ligne 3

Cellule D3 = cellule C13, c'est à dire le 1er pas horaire de la 3ème heure

etc...

Merci d'avance à tous ceux qui pourraient résoudre ce problème.

alisso

bonjour,

une solution avec une formule à copier en D1 tirer vers la droite jusqu'en I1 et tirer vers le bas autant que nécessaire.

=INDIRECT("C" & MOD(COLONNE()-4;6)+1+(LIGNE()-1)*6)

ou via une macro

Sub groupH()
Application.ScreenUpdating = False
derlig = Range("A" & Rows.Count).End(xlUp).Row
l = 0
For i = 1 To derlig Step 6
l = l + 1
 For j = 0 To 5
  Cells(l, 4 + j) = Cells(i + j, 3)
 Next j
Next i
Application.ScreenUpdating = True
End Sub

[EDIT]Bonjour à tous,

salut R@chid

à tester.

Bonjour et Bienvenue sur XLP,

J'ai pas bien compris..

A tout hasard, en D1,

=DECALER($C$1;(LIGNE()-1)*6+COLONNES($D:D)-1;)

@ tirer vers le bas et vers la droite.

@ + +

Edit : Salut les amis

R@chid a écrit :

Edit : Salut les amis

Salut R@chid

Bonjour,

Merci aux 3 experts pour vos réponses rapides.

Les 3 solutions suivantes correspondent à mon besoin.

1 -Formule INDIRECT("C" & MOD(COLONNE()-4;6)+1+(LIGNE()-1)*6) d'H2so4.

2 - Macro envoyée par Game Over. Pour un profane comme je suis, c'est encore plus simple avec cette macro que la formule à tirer sur toute les cases car il faut juste cliquer sur un bouton.

3 - Formule =DECALER($C$1;(LIGNE()-1)*6+COLONNES($D:D)-1;) de R@chid

Pour l'instant, je vais rester humble et prendre la formule de Rachid car c'est celle que je comprend et j'avais voulu trouver une solution avec la fonction DECALER sans succès.

Je vais néanmoins approfondir les deux autres solutions afin de mieux appréhender les formules dans excel ou bien le code VBA.

Nota : J'ai voulu également tester la macro envoyée par H2so4 mais mon PC (peut être est il obsolète) ne m'a jamais rendu la main et j'ai dû arrêter sauvagement excel au bout de 15mn!

alisso

Bonjour,

Pour les formule, c'est simple, il suffit de copier la formule, puis sélectionner la plage D1:I721, coller la formule dans la Barre de Formule puis valider par Ctrl+Entree.

@ + +

Merci pour cette dernière astuce car pour la sélection de cellules multiples, je fais tout à la souris.

Alisso

Bonjour,

Pour sélectionner la plage D1:I721 :

Mettre le curseur en D1

Maintenir la touche Shift (Maj) enfoncée.

Cliquer dans la cellule I721

@ + +

une autre manière

sélectionner D1 à I1 puis double-cliquer (comme me l'a fait remarquer R@chid) sur le petit carré noir en bas à droite de la cellule I1.

Rechercher des sujets similaires à "passage colonne ligne traitement horaire"