OVH Cloud OVH Cloud

Trouver les cellules non vides

7 réponses
Avatar
Soya
Bonjour tout le monde !
J'ai un tableau avec comme en-têtes de colonnes des noms, et comme en-tête
de lignes des dates (du 1er janvier au 31 décembre). Ce tableau se complète
en mettant un x (ou un chiffre, peu importe), pour dire que Dupont ou Durand
était là à telle date.

Je voudrais, dans un autre tableau, afficher en face de chaque nom les dates
auxquelles chaque personne était là, selon le grand tableau complété...

Commenkonfé ? Merci de votre aide !

7 réponses

Avatar
anonymousA
bonjour,

par macro, c'est pas très compliqué.
Par formule (y.c matricielle) aucune idée si c'est possible d'autant que
tu ne dis rien sur la forme du tableau que tu veux obtenir, mais si
c'est le cas , les supercadors de la formule que je ne citerais pas (ils
se reconnaitront) , devraient t'apporter une solution.
Si c'est du VBA que tu veux, reviens poster.

A+

Bonjour tout le monde !
J'ai un tableau avec comme en-têtes de colonnes des noms, et comme en-tête
de lignes des dates (du 1er janvier au 31 décembre). Ce tableau se complète
en mettant un x (ou un chiffre, peu importe), pour dire que Dupont ou Durand
était là à telle date.

Je voudrais, dans un autre tableau, afficher en face de chaque nom les dates
auxquelles chaque personne était là, selon le grand tableau complété...

Commenkonfé ? Merci de votre aide !


Avatar
isabelle
bonjour Soya,

Sub transpose()
Dim x, n, m, k, plgL, plgC
Set plgC = Sheets("Feuil1").Range("B1:IV" & Sheets("Feuil1").Range("IV1").End(xlToLeft).Column)
For Each c In plgC
x = x + 1
m = c.Column
n = Sheets("Feuil1").Cells(65535, 1).End(xlUp).Row
With Sheets("Feuil1")
Set plgL = .Range(.Cells(2, m), .Cells(n, m))
End With
Sheets("Feuil2").Cells(x, 1) = c
For Each k In plgL
If Not k = Empty Then
col = Sheets("Feuil2").Cells(x, 256).End(xlToLeft).Column + 1
Sheets("Feuil2").Cells(x, col) = Sheets("Feuil1").Cells(k.Row, 1)
End If
Next
Next
Set plgC = Nothing
Set plgL = Nothing
End Sub


isabelle


Bonjour tout le monde !
J'ai un tableau avec comme en-têtes de colonnes des noms, et comme en-tête
de lignes des dates (du 1er janvier au 31 décembre). Ce tableau se complète
en mettant un x (ou un chiffre, peu importe), pour dire que Dupont ou Durand
était là à telle date.

Je voudrais, dans un autre tableau, afficher en face de chaque nom les dates
auxquelles chaque personne était là, selon le grand tableau complété...

Commenkonfé ? Merci de votre aide !


Avatar
Soya
Bonjour Isabelle,

Merci beaucoup tout d'abord pour le temps que tu as consacré à ma question.
J'ai cependant un petit problème lorsque j'exécute le code, mais je vais te
donner des détails sur mon tableau et tu vas sûrement trouver pourquoi ça ne
colle pas.
Voici comment se présente le tableau :

Mois Date Dupont Durant Martin Jean
1 01/01 1
1 02/01 1
1 03/01 1

etc, jusqu'au 31 décembre. J'ai des sous-totaux sous chaque mois (NBVAL) par
personne

Donc, quand j'exécute le code, Excel m'affiche :

Mois 6 6 6 NBVAL
Mois 6 6 6 NB 6 NB VAL
Mois
Mois

etc...

De quoi donc retourne-t-il ... ? c'est là la question...
Si je comprenais bien ton code, j'essaierais de changer des choses, mais ça
me fait l'effet de chinois mandarin... Alors si tu pouvais me donner un
dernier petit coup de main... ce serait bien aprécié !

Soya


bonjour Soya,

Sub transpose()
Dim x, n, m, k, plgL, plgC
Set plgC = Sheets("Feuil1").Range("B1:IV" & Sheets("Feuil1").Range("IV1").End(xlToLeft).Column)
For Each c In plgC
x = x + 1
m = c.Column
n = Sheets("Feuil1").Cells(65535, 1).End(xlUp).Row
With Sheets("Feuil1")
Set plgL = .Range(.Cells(2, m), .Cells(n, m))
End With
Sheets("Feuil2").Cells(x, 1) = c
For Each k In plgL
If Not k = Empty Then
col = Sheets("Feuil2").Cells(x, 256).End(xlToLeft).Column + 1
Sheets("Feuil2").Cells(x, col) = Sheets("Feuil1").Cells(k.Row, 1)
End If
Next
Next
Set plgC = Nothing
Set plgL = Nothing
End Sub


isabelle


Bonjour tout le monde !
J'ai un tableau avec comme en-têtes de colonnes des noms, et comme en-tête
de lignes des dates (du 1er janvier au 31 décembre). Ce tableau se complète
en mettant un x (ou un chiffre, peu importe), pour dire que Dupont ou Durand
était là à telle date.

Je voudrais, dans un autre tableau, afficher en face de chaque nom les dates
auxquelles chaque personne était là, selon le grand tableau complété...

Commenkonfé ? Merci de votre aide !





Avatar
isabelle
bonjour Soya,

oui je veux bien, si tu peut mettre le fichier ici http://cjoint.com/, ça m'aiderais.

isabelle


Bonjour Isabelle,

Merci beaucoup tout d'abord pour le temps que tu as consacré à ma question.
J'ai cependant un petit problème lorsque j'exécute le code, mais je vais te
donner des détails sur mon tableau et tu vas sûrement trouver pourquoi ça ne
colle pas.
Voici comment se présente le tableau :

Mois Date Dupont Durant Martin Jean
1 01/01 1
1 02/01 1
1 03/01 1

etc, jusqu'au 31 décembre. J'ai des sous-totaux sous chaque mois (NBVAL) par
personne

Donc, quand j'exécute le code, Excel m'affiche :

Mois 6 6 6 NBVAL
Mois 6 6 6 NB 6 NB VAL
Mois
Mois

etc...

De quoi donc retourne-t-il ... ? c'est là la question...
Si je comprenais bien ton code, j'essaierais de changer des choses, mais ça
me fait l'effet de chinois mandarin... Alors si tu pouvais me donner un
dernier petit coup de main... ce serait bien aprécié !

Soya



bonjour Soya,

Sub transpose()
Dim x, n, m, k, plgL, plgC
Set plgC = Sheets("Feuil1").Range("B1:IV" & Sheets("Feuil1").Range("IV1").End(xlToLeft).Column)
For Each c In plgC
x = x + 1
m = c.Column
n = Sheets("Feuil1").Cells(65535, 1).End(xlUp).Row
With Sheets("Feuil1")
Set plgL = .Range(.Cells(2, m), .Cells(n, m))
End With
Sheets("Feuil2").Cells(x, 1) = c
For Each k In plgL
If Not k = Empty Then
col = Sheets("Feuil2").Cells(x, 256).End(xlToLeft).Column + 1
Sheets("Feuil2").Cells(x, col) = Sheets("Feuil1").Cells(k.Row, 1)
End If
Next
Next
Set plgC = Nothing
Set plgL = Nothing
End Sub


isabelle



Bonjour tout le monde !
J'ai un tableau avec comme en-têtes de colonnes des noms, et comme en-tête
de lignes des dates (du 1er janvier au 31 décembre). Ce tableau se complète
en mettant un x (ou un chiffre, peu importe), pour dire que Dupont ou Durand
était là à telle date.

Je voudrais, dans un autre tableau, afficher en face de chaque nom les dates
auxquelles chaque personne était là, selon le grand tableau complété...

Commenkonfé ? Merci de votre aide !







Avatar
Soya
Merci Anonyme de ta disponibilité.

Je connais pas mal les formules matricielles et je ne crois pas que cela
fonctionne dans ce cas. Je pense qu'il me faut vraiment un code.

J'ai donné un peu plus de détails sur mon tableau dans la réponse que j'ai
faite à Isabelle, si ça peut te motiver à plancher sur le problème... :)

Soya


bonjour,

par macro, c'est pas très compliqué.
Par formule (y.c matricielle) aucune idée si c'est possible d'autant que
tu ne dis rien sur la forme du tableau que tu veux obtenir, mais si
c'est le cas , les supercadors de la formule que je ne citerais pas (ils
se reconnaitront) , devraient t'apporter une solution.
Si c'est du VBA que tu veux, reviens poster.

A+

Bonjour tout le monde !
J'ai un tableau avec comme en-têtes de colonnes des noms, et comme en-tête
de lignes des dates (du 1er janvier au 31 décembre). Ce tableau se complète
en mettant un x (ou un chiffre, peu importe), pour dire que Dupont ou Durand
était là à telle date.

Je voudrais, dans un autre tableau, afficher en face de chaque nom les dates
auxquelles chaque personne était là, selon le grand tableau complété...

Commenkonfé ? Merci de votre aide !





Avatar
ChrisV
Bonjour Soya,

Je connais pas mal les formules matricielles et je ne crois pas que cela
fonctionne dans ce cas.


Challenge ? ;-)

Selon l'organisation des données indiquée à Isa, sur un tableau "test"
A1:F10, et avec la plage B2:B10 nommée ici "dtS".

Définir, par les menus, un nouveau nom:
Insertion/Nom/Définir.../
Nom dans le classeur: noM
Fait référence à:
=INDIRECT(SUBSTITUE(ADRESSE(1;LIGNE()-13;4);"1";"")&"2:"&SUBSTITUE(ADRESSE(1;LIGNE()-13;4);"1";"")&"10")

En B16:B19, les noms du tableau principal (tu pourrais d'ailleurs, si cette
liste est fréquemment utilisée, créer, d'après ces données existantes, une
liste personnalisée...)

Sur la plage C16:K16 sélectionnée,
(à saisir sans les { } et valider par Ctrl+Shift+Entrée, puis à recopier
vers la ligne 19)

{=SI(ESTERR(PETITE.VALEUR(SI(noM<>"";LIGNE(INDIRECT("1:"&LIGNES(dtS))));TRANSPOSE(LIGNE(INDIRECT("1:"&LIGNES(dtS))))));"";INDEX(dtS;PETITE.VALEUR(SI(noM<>"";LIGNE(INDIRECT("1:"&LIGNES(dtS))));TRANSPOSE(LIGNE(INDIRECT("1:"&LIGNES(dtS)))))))}


ChrisV

nb: fonction ou macro... ne pas oublier toutefois, puisque tes dates
s'étendent apparemment sur 365 jours, que le nombre de colonnes est limité
lui, à 256...!



"Soya" a écrit dans le message de news:

Merci Anonyme de ta disponibilité.

Je connais pas mal les formules matricielles et je ne crois pas que cela
fonctionne dans ce cas. Je pense qu'il me faut vraiment un code.

J'ai donné un peu plus de détails sur mon tableau dans la réponse que j'ai
faite à Isabelle, si ça peut te motiver à plancher sur le problème... :)

Soya


bonjour,

par macro, c'est pas très compliqué.
Par formule (y.c matricielle) aucune idée si c'est possible d'autant que
tu ne dis rien sur la forme du tableau que tu veux obtenir, mais si
c'est le cas , les supercadors de la formule que je ne citerais pas (ils
se reconnaitront) , devraient t'apporter une solution.
Si c'est du VBA que tu veux, reviens poster.

A+

Bonjour tout le monde !
J'ai un tableau avec comme en-têtes de colonnes des noms, et comme
en-tête
de lignes des dates (du 1er janvier au 31 décembre). Ce tableau se
complète
en mettant un x (ou un chiffre, peu importe), pour dire que Dupont ou
Durand
était là à telle date.

Je voudrais, dans un autre tableau, afficher en face de chaque nom les
dates
auxquelles chaque personne était là, selon le grand tableau complété...

Commenkonfé ? Merci de votre aide !







Avatar
ChrisV
Le classeur test se trouve ici...
http://cjoint.com/?gscIYKWDrz


ChrisV


"ChrisV" a écrit dans le message de news:
%
Bonjour Soya,

Je connais pas mal les formules matricielles et je ne crois pas que cela
fonctionne dans ce cas.


Challenge ? ;-)

Selon l'organisation des données indiquée à Isa, sur un tableau "test"
A1:F10, et avec la plage B2:B10 nommée ici "dtS".

Définir, par les menus, un nouveau nom:
Insertion/Nom/Définir.../
Nom dans le classeur: noM
Fait référence à:
=INDIRECT(SUBSTITUE(ADRESSE(1;LIGNE()-13;4);"1";"")&"2:"&SUBSTITUE(ADRESSE(1;LIGNE()-13;4);"1";"")&"10")

En B16:B19, les noms du tableau principal (tu pourrais d'ailleurs, si
cette liste est fréquemment utilisée, créer, d'après ces données
existantes, une liste personnalisée...)

Sur la plage C16:K16 sélectionnée,
(à saisir sans les { } et valider par Ctrl+Shift+Entrée, puis à recopier
vers la ligne 19)

{=SI(ESTERR(PETITE.VALEUR(SI(noM<>"";LIGNE(INDIRECT("1:"&LIGNES(dtS))));TRANSPOSE(LIGNE(INDIRECT("1:"&LIGNES(dtS))))));"";INDEX(dtS;PETITE.VALEUR(SI(noM<>"";LIGNE(INDIRECT("1:"&LIGNES(dtS))));TRANSPOSE(LIGNE(INDIRECT("1:"&LIGNES(dtS)))))))}


ChrisV

nb: fonction ou macro... ne pas oublier toutefois, puisque tes dates
s'étendent apparemment sur 365 jours, que le nombre de colonnes est limité
lui, à 256...!



"Soya" a écrit dans le message de news:

Merci Anonyme de ta disponibilité.

Je connais pas mal les formules matricielles et je ne crois pas que cela
fonctionne dans ce cas. Je pense qu'il me faut vraiment un code.

J'ai donné un peu plus de détails sur mon tableau dans la réponse que
j'ai
faite à Isabelle, si ça peut te motiver à plancher sur le problème... :)

Soya


bonjour,

par macro, c'est pas très compliqué.
Par formule (y.c matricielle) aucune idée si c'est possible d'autant que
tu ne dis rien sur la forme du tableau que tu veux obtenir, mais si
c'est le cas , les supercadors de la formule que je ne citerais pas (ils
se reconnaitront) , devraient t'apporter une solution.
Si c'est du VBA que tu veux, reviens poster.

A+

Bonjour tout le monde !
J'ai un tableau avec comme en-têtes de colonnes des noms, et comme
en-tête
de lignes des dates (du 1er janvier au 31 décembre). Ce tableau se
complète
en mettant un x (ou un chiffre, peu importe), pour dire que Dupont ou
Durand
était là à telle date.

Je voudrais, dans un autre tableau, afficher en face de chaque nom les
dates
auxquelles chaque personne était là, selon le grand tableau
complété...

Commenkonfé ? Merci de votre aide !