Tester les cellules non vides d'un tableau

Le
jpthillard
Bonjour,

Je voudrais tester le contenu d'une plage de cellules dans un tableau
et récupérer des informations de deux cellules (date et nom). J'ai
tenté de le faire avec une fonction recherchev. Je vois bien qu'elle
est inappropriée. Comment puis-je faire ?
En PJ un fichier exemple: http://cjoint.com/?fnlVFGkWkM
Merci d'avance

JP
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 4
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-François Aubert
Le #4513551
Salut JP

A l'onglet "récapitulatif" du fichier, j'ai fait quelquechose pour "2 CAP
CSI" . Si cela peut convenir, tu n'as plus qu'à faire la même chose pour
l'autre classe.
Tout est en formules dans les lignes et colonnes masquées.

http://www.cijoint.fr/cij18543094313219.xls

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}



Bonjour,

Je voudrais tester le contenu d'une plage de cellules dans un tableau
et récupérer des informations de deux cellules (date et nom). J'ai
tenté de le faire avec une fonction recherchev. Je vois bien qu'elle
est inappropriée. Comment puis-je faire ?
En PJ un fichier exemple: http://cjoint.com/?fnlVFGkWkM
Merci d'avance

JP
jpthillard
Le #4513431
On 13 mai, 15:01, "Jean-François Aubert" wrote:
Salut JP

A l'onglet "récapitulatif" du fichier, j'ai fait quelquechose pour "2 CAP
CSI" . Si cela peut convenir, tu n'as plus qu'à faire la même chose p our
l'autre classe.
Tout est en formules dans les lignes et colonnes masquées.

http://www.cijoint.fr/cij18543094313219.xls

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


Bonjour,

Je voudrais tester le contenu d'une plage de cellules dans un tableau
et récupérer des informations de deux cellules (date et nom). J'ai
tenté de le faire avec une fonction recherchev. Je vois bien qu'elle
est inappropriée. Comment puis-je faire ?
En PJ un fichier exemple:http://cjoint.com/?fnlVFGkWkM
Merci d'avance

JP


Bonjour Jean-François,

Je suis effrayé de l'ampleur de la tâche car l'exemple ne porte que
sur 2 classes alors que le nombre réel est au minimum de 13 et que la
situation de récapitulatif porte sur 3 mois (avril, mai et juin).
On ne peut pas trouver plus simple? Si je dois en passer par là, je le
ferai!

Merci pour ta proposition. J'attends un peu de savoir si d'autres
idées pouvent emmerger.

Jean-François Aubert
Le #4513331
Salut JP,
Oui, avec des formules, pour faire un resumé d'un tableau, c'est pas
simple...
Il y a aussi les macros.. Es-tu prêt à passer par là ?

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}



On 13 mai, 15:01, "Jean-François Aubert" wrote:
Salut JP

A l'onglet "récapitulatif" du fichier, j'ai fait quelquechose pour "2 CAP
CSI" . Si cela peut convenir, tu n'as plus qu'à faire la même chose pour
l'autre classe.
Tout est en formules dans les lignes et colonnes masquées.

http://www.cijoint.fr/cij18543094313219.xls

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


Bonjour,

Je voudrais tester le contenu d'une plage de cellules dans un tableau
et récupérer des informations de deux cellules (date et nom). J'ai
tenté de le faire avec une fonction recherchev. Je vois bien qu'elle
est inappropriée. Comment puis-je faire ?
En PJ un fichier exemple:http://cjoint.com/?fnlVFGkWkM
Merci d'avance

JP


Bonjour Jean-François,

Je suis effrayé de l'ampleur de la tâche car l'exemple ne porte que
sur 2 classes alors que le nombre réel est au minimum de 13 et que la
situation de récapitulatif porte sur 3 mois (avril, mai et juin).
On ne peut pas trouver plus simple? Si je dois en passer par là, je le
ferai!

Merci pour ta proposition. J'attends un peu de savoir si d'autres
idées pouvent emmerger.

cousinhub
Le #4513241
Bonsoir,
cette demande est effectivement assez complexe, il faut chercher le
cours, en déduire la date et le professeur...
Regarde le fichier ci-joint, et dis moi si cela te convient.
Du bricolage pur et dur.....
Forcément, tu auras un peu de travail à faire....
Tout d'abord, nommer les zones nécessaires.
Sur mon exemple, la zone "avril" comprend les cellules de D3 à Z3
la zone emp_avril de D4 à Z20
Il te faut insérer une ligne et une colonne en tout début de ton
tableau, insertion que tu pourras masquer, bien sûr.
pour la première ligne, zone nommée "baseh"
pour la colonne, une zone nommée "basev_avril"
ensuite, pour la date, formule :

=INDEX(avril;SOMMEPROD((emp_avril²)*(baseh)))

pour le nom du prof :

=INDEX(emp_avril;(SOMMEPROD((emp_avril²)*(basev_avril))-1);SOMMEPROD((emp_avril²)*(baseh)))

Remarque, tu peux déterminer tes zones sans les noms, mais pour savoir
où on se situe, c'est plus facile...
Reviens si tu as un problème

http://cjoint.com/?fnv66IQ6jl



Bonjour,

Je voudrais tester le contenu d'une plage de cellules dans un tableau
et récupérer des informations de deux cellules (date et nom). J'ai
tenté de le faire avec une fonction recherchev. Je vois bien qu'elle
est inappropriée. Comment puis-je faire ?
En PJ un fichier exemple: http://cjoint.com/?fnlVFGkWkM
Merci d'avance

JP



jpthillard
Le #4513221
On 13 mai, 22:01, cousinhub
Bonsoir,
cette demande est effectivement assez complexe, il faut chercher le
cours, en déduire la date et le professeur...
Regarde le fichier ci-joint, et dis moi si cela te convient.
Du bricolage pur et dur.....
Forcément, tu auras un peu de travail à faire....
Tout d'abord, nommer les zones nécessaires.
Sur mon exemple, la zone "avril" comprend les cellules de D3 à Z3
la zone emp_avril de D4 à Z20
Il te faut insérer une ligne et une colonne en tout début de ton
tableau, insertion que tu pourras masquer, bien sûr.
pour la première ligne, zone nommée "baseh"
pour la colonne, une zone nommée "basev_avril"
ensuite, pour la date, formule :

=INDEX(avril;SOMMEPROD((emp_avril²)*(baseh)))

pour le nom du prof :

=INDEX(emp_avril;(SOMMEPROD((emp_avril²)*(basev_avril))-1);SOMMEPRO D((emp­_avril²)*(baseh)))

Remarque, tu peux déterminer tes zones sans les noms, mais pour savoir
où on se situe, c'est plus facile...
Reviens si tu as un problème

http://cjoint.com/?fnv66IQ6jl





Bonjour,

Je voudrais tester le contenu d'une plage de cellules dans un tableau
et récupérer des informations de deux cellules (date et nom). J'ai
tenté de le faire avec une fonction recherchev. Je vois bien qu'elle
est inappropriée. Comment puis-je faire ?
En PJ un fichier exemple:http://cjoint.com/?fnlVFGkWkM
Merci d'avance

JP- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -


Bonsoir Cousinhub,
Je ne pensais pas m'être mis dans une situation aussi compliquée. J'ai
partiellement effectué le travail avec la solution de JFrançois
Aubert. C'est long et fastidieux mais efficace. Je vais exploiter ta
solution en nommant les plages. Merci à vous deux et je ne manquerai
pas de vous recontacter en cas de problème. Sauf que ma semaine va
être longue et que je n'aurai loisir de reprendre ce travail qu'en fin
de semaine prochaine.
Merci encore
JP


FFO
Le #4513211
Salut à toi

Je te propose une solution Macro que tu devras juste réactualisée concernant
la zone à traiter liée au Mois
Tous les onglets seront automatiquement pris en compte
Attention le résultat est reporté dans l'onglet "Analyse des incriptions aux
CCF" dans la colonne approprié dans les cellules de chaque matière telle que
décrite dans ton fichier
Si tu changes leur ordre il faudra faire la correction appropriée dans la
macro

Le code :

For I = 1 To Sheets.Count
Nom = Sheets(I).Name
If Nom <> "Analyse des incriptions aux CCF" Then
Sheets("Analyse des incriptions aux CCF").Select
Rows("1:1").Select
Selection.Find(What:=Nom, After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate
Colonne = Mid(ActiveCell.Address, 2, 1)
Sheets(I).Select
For Each c In Worksheets(Nom).Range("C3", "Y19")

If c = "Français 1" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "2") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "3") =
c.Offset(-1, 0)
End If

If c = "Français 2" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "4") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "5") =
c.Offset(-1, 0)
End If

If c = "Français 3" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "6") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "7") =
c.Offset(-1, 0)
End If

If c = "Histoire" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "8") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "9") =
c.Offset(-1, 0)
End If

If c = "Géographie" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "10") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "11") =
c.Offset(-1, 0)
End If

If c = "Maths" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "12") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "13") =
c.Offset(-1, 0)
End If

If c = "Physique" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "14") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "15") =
c.Offset(-1, 0)
End If

If c = "Anglais" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "16") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "17") =
c.Offset(-1, 0)
End If

If c = "Allemand" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "18") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "19") =
c.Offset(-1, 0)
End If

If c = "Laboratoire" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "20") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "21") =
c.Offset(-1, 0)
End If

If c = "Topographie" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "22") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "23") =
c.Offset(-1, 0)
End If

Next
End If
Next


Tu dois corriger la ligne :
For Each c In Worksheets(Nom).Range("C3", "Y19") et plus particulièrement
"C3", "Y19" qui correspond à la zone d'Avril pour un autre mois

Entre chaque If et End If tu as les cellules de recopie de chaque matière
dans l'onglet ("Analyse des incriptions aux CCF")
Pour le Français 1
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "2") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "3") =
c.Offset(-1, 0)

Le Range porte la ligne dans laquelle la valeur sera reportée dans la
colonne approprié
Date ligne 2 : Range(Colonne & "2")
Nom ligne 3 : Range(Colonne & "3")

N'oublies donc de les corriger si les lignes ne correspondent plus suite à
un changement

Voilà teste le et dis moi ce que t'en pense !!!
Traitement immédiat avec ton exemple fourni


On 13 mai, 15:01, "Jean-François Aubert" wrote:
Salut JP

A l'onglet "récapitulatif" du fichier, j'ai fait quelquechose pour "2 CAP
CSI" . Si cela peut convenir, tu n'as plus qu'à faire la même chose pour
l'autre classe.
Tout est en formules dans les lignes et colonnes masquées.

http://www.cijoint.fr/cij18543094313219.xls

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


Bonjour,

Je voudrais tester le contenu d'une plage de cellules dans un tableau
et récupérer des informations de deux cellules (date et nom). J'ai
tenté de le faire avec une fonction recherchev. Je vois bien qu'elle
est inappropriée. Comment puis-je faire ?
En PJ un fichier exemple:http://cjoint.com/?fnlVFGkWkM
Merci d'avance

JP


Bonjour Jean-François,

Je suis effrayé de l'ampleur de la tâche car l'exemple ne porte que
sur 2 classes alors que le nombre réel est au minimum de 13 et que la
situation de récapitulatif porte sur 3 mois (avril, mai et juin).
On ne peut pas trouver plus simple? Si je dois en passer par là, je le
ferai!

Merci pour ta proposition. J'attends un peu de savoir si d'autres
idées pouvent emmerger.





cousinhub
Le #4513201
Re-, entre les deux fichiers, le principe est pratiquement le même, on
recherche le numéro de ligne et de colonne de la valeur cible,
seulement, la fonction EQUIV ne peut chercher que sur une ligne et/ou
une colonne.
La fonction SOMMEPROD peut chercher sur un tableau à plusieurs colonnes
ET plusieurs lignes, d'où une unique formule.
Maintenant, l'insertion de lignes ou de colonnes dans mon exemple
pourrait être remplacée par une recherche (donc une formule longue comme
une semaine bien remplie;-)).
Bon courage et bonne semaine


On 13 mai, 22:01, cousinhub
Bonsoir,
cette demande est effectivement assez complexe, il faut chercher le
cours, en déduire la date et le professeur...
Regarde le fichier ci-joint, et dis moi si cela te convient.
Du bricolage pur et dur.....
Forcément, tu auras un peu de travail à faire....
Tout d'abord, nommer les zones nécessaires.
Sur mon exemple, la zone "avril" comprend les cellules de D3 à Z3
la zone emp_avril de D4 à Z20
Il te faut insérer une ligne et une colonne en tout début de ton
tableau, insertion que tu pourras masquer, bien sûr.
pour la première ligne, zone nommée "baseh"
pour la colonne, une zone nommée "basev_avril"
ensuite, pour la date, formule :

=INDEX(avril;SOMMEPROD((emp_avril²)*(baseh)))

pour le nom du prof :

=INDEX(emp_avril;(SOMMEPROD((emp_avril²)*(basev_avril))-1);SOMMEPROD((emp­_avril²)*(baseh)))

Remarque, tu peux déterminer tes zones sans les noms, mais pour savoir
où on se situe, c'est plus facile...
Reviens si tu as un problème

http://cjoint.com/?fnv66IQ6jl




Bonjour,
Je voudrais tester le contenu d'une plage de cellules dans un tableau
et récupérer des informations de deux cellules (date et nom). J'ai
tenté de le faire avec une fonction recherchev. Je vois bien qu'elle
est inappropriée. Comment puis-je faire ?
En PJ un fichier exemple:http://cjoint.com/?fnlVFGkWkM
Merci d'avance
JP- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -



Bonsoir Cousinhub,
Je ne pensais pas m'être mis dans une situation aussi compliquée. J'ai
partiellement effectué le travail avec la solution de JFrançois
Aubert. C'est long et fastidieux mais efficace. Je vais exploiter ta
solution en nommant les plages. Merci à vous deux et je ne manquerai
pas de vous recontacter en cas de problème. Sauf que ma semaine va
être longue et que je n'aurai loisir de reprendre ce travail qu'en fin
de semaine prochaine.
Merci encore
JP





cousinhub
Le #4513191
Bonsoir FFO,
J'ai remarqué que tu intervenais bien souvent sur ce forum, à bon
escient, mais sais-tu qu'ils comptabilisent les intervenants issus de,
je cite (voir les stats CDO de Jièl) :
"cette "interface de m***",
et qu'ils en font des moyennes...
Si tu veux un petit conseil, aussi bien pour la lecture et le suivi des
fils sur ce forum, tu pourrais passer via un lecteur de news (OE,
Thunderbird, Opera, Mesnews, j'en passe...), et ainsi leur faire
plaisir....;-)
Bien amicalement

Salut à toi

Je te propose une solution Macro que tu devras juste réactualisée concernant
la zone à traiter liée au Mois
Tous les onglets seront automatiquement pris en compte
Attention le résultat est reporté dans l'onglet "Analyse des incriptions aux
CCF" dans la colonne approprié dans les cellules de chaque matière telle que
décrite dans ton fichier
Si tu changes leur ordre il faudra faire la correction appropriée dans la
macro

Le code :

For I = 1 To Sheets.Count
Nom = Sheets(I).Name
If Nom <> "Analyse des incriptions aux CCF" Then
Sheets("Analyse des incriptions aux CCF").Select
Rows("1:1").Select
Selection.Find(What:=Nom, After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate
Colonne = Mid(ActiveCell.Address, 2, 1)
Sheets(I).Select
For Each c In Worksheets(Nom).Range("C3", "Y19")

If c = "Français 1" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "2") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "3") =
c.Offset(-1, 0)
End If

If c = "Français 2" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "4") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "5") =
c.Offset(-1, 0)
End If

If c = "Français 3" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "6") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "7") =
c.Offset(-1, 0)
End If

If c = "Histoire" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "8") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "9") =
c.Offset(-1, 0)
End If

If c = "Géographie" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "10") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "11") =
c.Offset(-1, 0)
End If

If c = "Maths" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "12") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "13") =
c.Offset(-1, 0)
End If

If c = "Physique" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "14") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "15") =
c.Offset(-1, 0)
End If

If c = "Anglais" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "16") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "17") =
c.Offset(-1, 0)
End If

If c = "Allemand" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "18") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "19") =
c.Offset(-1, 0)
End If

If c = "Laboratoire" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "20") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "21") =
c.Offset(-1, 0)
End If

If c = "Topographie" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "22") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "23") =
c.Offset(-1, 0)
End If

Next
End If
Next


Tu dois corriger la ligne :
For Each c In Worksheets(Nom).Range("C3", "Y19") et plus particulièrement
"C3", "Y19" qui correspond à la zone d'Avril pour un autre mois

Entre chaque If et End If tu as les cellules de recopie de chaque matière
dans l'onglet ("Analyse des incriptions aux CCF")
Pour le Français 1
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "2") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "3") =
c.Offset(-1, 0)

Le Range porte la ligne dans laquelle la valeur sera reportée dans la
colonne approprié
Date ligne 2 : Range(Colonne & "2")
Nom ligne 3 : Range(Colonne & "3")

N'oublies donc de les corriger si les lignes ne correspondent plus suite à
un changement

Voilà teste le et dis moi ce que t'en pense !!!
Traitement immédiat avec ton exemple fourni


On 13 mai, 15:01, "Jean-François Aubert" wrote:
Salut JP

A l'onglet "récapitulatif" du fichier, j'ai fait quelquechose pour "2 CAP
CSI" . Si cela peut convenir, tu n'as plus qu'à faire la même chose pour
l'autre classe.
Tout est en formules dans les lignes et colonnes masquées.

http://www.cijoint.fr/cij18543094313219.xls

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


Bonjour,

Je voudrais tester le contenu d'une plage de cellules dans un tableau
et récupérer des informations de deux cellules (date et nom). J'ai
tenté de le faire avec une fonction recherchev. Je vois bien qu'elle
est inappropriée. Comment puis-je faire ?
En PJ un fichier exemple:http://cjoint.com/?fnlVFGkWkM
Merci d'avance

JP
Bonjour Jean-François,


Je suis effrayé de l'ampleur de la tâche car l'exemple ne porte que
sur 2 classes alors que le nombre réel est au minimum de 13 et que la
situation de récapitulatif porte sur 3 mois (avril, mai et juin).
On ne peut pas trouver plus simple? Si je dois en passer par là, je le
ferai!

Merci pour ta proposition. J'attends un peu de savoir si d'autres
idées pouvent emmerger.







JB
Le #4513101
Bonjour,

Solution 1: un seul onglet à traiter

=INDEX(champ_avril;
1;SOMMEPROD((champ_avril²)*(COLONNE(champ_avril)))-
COLONNE(champ_avril)+1)
=INDEX(champ_avril;SOMMEPROD((champ_avril²)*(LIGNE(champ_avril)))-
LIGNE(champ_avril);SOMMEPROD((champ_avril²)*(COLONNE(champ_avril)))-
COLONNE(champ_avril)+1)

http://cjoint.com/?foinGgsHe1

Solution2: plusieurs onglets à traiter

=INDEX(INDIRECT("'"&C$1&"'!$C$2:$Y$19");1;SOMMEPROD((INDIRECT("'"&C
$1&"'!$C$2:$Y$19")=$B2)*(COLONNE(INDIRECT("'"&C$1&"'!$C$2:$Y$19"))))-
COLONNE(INDIRECT("'"&C$1&"'!$C$2:$Y$19"))+1)

=INDEX(INDIRECT("'"&C$1&"'!$C$2:$Y$19");SOMMEPROD((INDIRECT("'"&C$1&"'!
$C$2:$Y$19")=$B2)*(LIGNE(INDIRECT("'"&C$1&"'!$C$2:$Y$19"))))-
LIGNE(INDIRECT("'"&C$1&"'!$C$2:$Y$19"));SOMMEPROD((INDIRECT("'"&C$1&"'!
$C$2:$Y$19")=$B2)*(COLONNE(INDIRECT("'"&C$1&"'!$C$2:$Y$19"))))-
COLONNE(INDIRECT("'"&C$1&"'!$C$2:$Y$19"))+1)

http://cjoint.com/?foiofk6HUh

Cordialement JB


On 13 mai, 11:48, wrote:
Bonjour,

Je voudrais tester le contenu d'une plage de cellules dans un tableau
et récupérer des informations de deux cellules (date et nom). J'ai
tenté de le faire avec une fonction recherchev. Je vois bien qu'elle
est inappropriée. Comment puis-je faire ?
En PJ un fichier exemple:http://cjoint.com/?fnlVFGkWkM
Merci d'avance

JP


FFO
Le #4513081
Salut à toi
Mes interventions n'ont d'autre but que d'aider des interlocuteurs
Par leur difficulté je mets toutes mes connaissances en oeuvre cogite , met
au point une solution et prend toute la satisfaction à résoudre leur
problématique
En retour pour la plus part ils savent nous signifier leur profonde
gratitude (c'est je l'avoue trés grisant !!!) et moi de parfaire tout mon
savoir faire en Excel , j'en apprend beaucoup
Donc en résumé mes 2 objectifs :
Prendre un réel plaisir à aider
Emmagaziner des connaissances

Qu'il y est des actions mal intentionnée pour détourner mes objectifs à des
fins peu louables peu importe
Celà n'entamera pas mes 2 motivations

Tant qu'entre mes interlocuteurs demandeur d'une main secourable et moi qui
éprouve un réel plaisir à leur tendre tout le monde y trouve son compte je
n'aurais aucune raison de modifier cette dynamique

Pour ta gouverne je ne pense pas être le plus actif à mon grand regrêt
d'ailleur
Manque de temps et trés à la traine en terme de connaissance par rapport à
certain

Fort de toutes ces considérations si dans le même esprit tu as des
suggestions à me faire précise ta pensée car j'ai des difficulté à comprendre
où tu veux en venir
A quoi correspondent ces lecteurs de news (OE, Thunderbird, Opera, Mesnews,
j'en passe...) et que pourrait il m'apporter ????

Si tu peux éclairer ma lanterne je suis toujours ouvert aux améliorations en
adéquation avec ma philosophie

Heureux de te lire





Bonsoir FFO,
J'ai remarqué que tu intervenais bien souvent sur ce forum, à bon
escient, mais sais-tu qu'ils comptabilisent les intervenants issus de,
je cite (voir les stats CDO de Jièl) :
"cette "interface de m***",
et qu'ils en font des moyennes...
Si tu veux un petit conseil, aussi bien pour la lecture et le suivi des
fils sur ce forum, tu pourrais passer via un lecteur de news (OE,
Thunderbird, Opera, Mesnews, j'en passe...), et ainsi leur faire
plaisir....;-)
Bien amicalement

Salut à toi

Je te propose une solution Macro que tu devras juste réactualisée concernant
la zone à traiter liée au Mois
Tous les onglets seront automatiquement pris en compte
Attention le résultat est reporté dans l'onglet "Analyse des incriptions aux
CCF" dans la colonne approprié dans les cellules de chaque matière telle que
décrite dans ton fichier
Si tu changes leur ordre il faudra faire la correction appropriée dans la
macro

Le code :

For I = 1 To Sheets.Count
Nom = Sheets(I).Name
If Nom <> "Analyse des incriptions aux CCF" Then
Sheets("Analyse des incriptions aux CCF").Select
Rows("1:1").Select
Selection.Find(What:=Nom, After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate
Colonne = Mid(ActiveCell.Address, 2, 1)
Sheets(I).Select
For Each c In Worksheets(Nom).Range("C3", "Y19")

If c = "Français 1" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "2") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "3") =
c.Offset(-1, 0)
End If

If c = "Français 2" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "4") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "5") =
c.Offset(-1, 0)
End If

If c = "Français 3" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "6") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "7") =
c.Offset(-1, 0)
End If

If c = "Histoire" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "8") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "9") =
c.Offset(-1, 0)
End If

If c = "Géographie" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "10") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "11") =
c.Offset(-1, 0)
End If

If c = "Maths" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "12") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "13") =
c.Offset(-1, 0)
End If

If c = "Physique" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "14") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "15") =
c.Offset(-1, 0)
End If

If c = "Anglais" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "16") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "17") =
c.Offset(-1, 0)
End If

If c = "Allemand" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "18") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "19") =
c.Offset(-1, 0)
End If

If c = "Laboratoire" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "20") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "21") =
c.Offset(-1, 0)
End If

If c = "Topographie" Then
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "22") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "23") =
c.Offset(-1, 0)
End If

Next
End If
Next


Tu dois corriger la ligne :
For Each c In Worksheets(Nom).Range("C3", "Y19") et plus particulièrement
"C3", "Y19" qui correspond à la zone d'Avril pour un autre mois

Entre chaque If et End If tu as les cellules de recopie de chaque matière
dans l'onglet ("Analyse des incriptions aux CCF")
Pour le Français 1
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "2") =
c.Offset(-((c.Row) - 2), 0)
Sheets("Analyse des incriptions aux CCF").Range(Colonne & "3") =
c.Offset(-1, 0)

Le Range porte la ligne dans laquelle la valeur sera reportée dans la
colonne approprié
Date ligne 2 : Range(Colonne & "2")
Nom ligne 3 : Range(Colonne & "3")

N'oublies donc de les corriger si les lignes ne correspondent plus suite à
un changement

Voilà teste le et dis moi ce que t'en pense !!!
Traitement immédiat avec ton exemple fourni


On 13 mai, 15:01, "Jean-François Aubert" wrote:
Salut JP

A l'onglet "récapitulatif" du fichier, j'ai fait quelquechose pour "2 CAP
CSI" . Si cela peut convenir, tu n'as plus qu'à faire la même chose pour
l'autre classe.
Tout est en formules dans les lignes et colonnes masquées.

http://www.cijoint.fr/cij18543094313219.xls

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


Bonjour,

Je voudrais tester le contenu d'une plage de cellules dans un tableau
et récupérer des informations de deux cellules (date et nom). J'ai
tenté de le faire avec une fonction recherchev. Je vois bien qu'elle
est inappropriée. Comment puis-je faire ?
En PJ un fichier exemple:http://cjoint.com/?fnlVFGkWkM
Merci d'avance

JP
Bonjour Jean-François,


Je suis effrayé de l'ampleur de la tâche car l'exemple ne porte que
sur 2 classes alors que le nombre réel est au minimum de 13 et que la
situation de récapitulatif porte sur 3 mois (avril, mai et juin).
On ne peut pas trouver plus simple? Si je dois en passer par là, je le
ferai!

Merci pour ta proposition. J'attends un peu de savoir si d'autres
idées pouvent emmerger.










Publicité
Poster une réponse
Anonyme