Requête croisée Excel 2003

Le
thomas
Bonjour,

Ca fait quelques temps que je cherche à créer une requête un peu
particulière sans y parvenir

Comment écrire une requête pour obtenir ce résultat :
http://cjoint.com/data/kDtAMRr3im.htm

Merci pour votre aide!
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FFO
Le #17688761
Salut thomas

Je ne vois pas trop quelle requète te proposer compte tenu d'une certaine
compléxité de ton contexte
Mais cette macro relativement simple aboutit au même résultat :

For Each c In Worksheets("Feuil1").Range("A4", "A" &
Sheets("Feuil1").Range("A65535").End(xlUp).Row)
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = c.Offset(0, 1)
i = 1
For Each d In Worksheets("Feuil1").Range("D4", "D" &
Sheets("Feuil1").Range("D65535").End(xlUp).Row)
If d = c Then
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(0, i) = d.Offset(0, 1)
i = i + 1
End If
Next
Next

à actualiser :

Feuil1 et Feuil2 (Onglet données source et Onglet Résultat) en fonction du
nom des Onglets attribués

Range("A4", "A" & Sheets("Feuil1").Range("A65535").End(xlUp).Row) en
fonction de la position des indexes de la table 1 dans la feuille

Range("D4", "D" & Sheets("Feuil1").Range("D65535").End(xlUp).Row) en
fonction de la position des indexes de la table 2 dans la feuille

Ce code te donne le résultat souhaité en Feuil2

sur ce lien ton fichier avec la macro

http://www.cijoint.fr/cjlink.php?file=cj200810/cijstwO3ov.xls

Effaces en Feuil2 le résultat (lignes 2 à 4) et actives la macro "Requète"

Fais des essais et dis moi !!!!
thomas
Le #17697261
merci mais je m'etais planté de forum.. C'etait pour access

"FFO" discussion :
Salut thomas

Je ne vois pas trop quelle requète te proposer compte tenu d'une certaine
compléxité de ton contexte
Mais cette macro relativement simple aboutit au même résultat :

For Each c In Worksheets("Feuil1").Range("A4", "A" &
Sheets("Feuil1").Range("A65535").End(xlUp).Row)
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = c.Offset(0, 1)
i = 1
For Each d In Worksheets("Feuil1").Range("D4", "D" &
Sheets("Feuil1").Range("D65535").End(xlUp).Row)
If d = c Then
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(0, i) = d.Offset(0, 1)
i = i + 1
End If
Next
Next

à actualiser :

Feuil1 et Feuil2 (Onglet données source et Onglet Résultat) en fonction du
nom des Onglets attribués

Range("A4", "A" & Sheets("Feuil1").Range("A65535").End(xlUp).Row) en
fonction de la position des indexes de la table 1 dans la feuille

Range("D4", "D" & Sheets("Feuil1").Range("D65535").End(xlUp).Row) en
fonction de la position des indexes de la table 2 dans la feuille

Ce code te donne le résultat souhaité en Feuil2

sur ce lien ton fichier avec la macro

http://www.cijoint.fr/cjlink.php?file=cj200810/cijstwO3ov.xls

Effaces en Feuil2 le résultat (lignes 2 à 4) et actives la macro "Requète"

Fais des essais et dis moi !!!!
J&B
Le #17699411
Bonsoir,

La lecture et le test de cette macro est presque ce que je cherche.
Par contre dans la table 2 j'ai plusieurs champs description (decription2,
decription3, ....que je voudrai donc ajouter
dans la feuille 2

Merci pour l'aide


"thomas" <nomail> a écrit dans le message de news:

merci mais je m'etais planté de forum.. C'etait pour access

"FFO" discussion :
Salut thomas

Je ne vois pas trop quelle requète te proposer compte tenu d'une certaine
compléxité de ton contexte
Mais cette macro relativement simple aboutit au même résultat :

For Each c In Worksheets("Feuil1").Range("A4", "A" &
Sheets("Feuil1").Range("A65535").End(xlUp).Row)
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = c.Offset(0, 1)
i = 1
For Each d In Worksheets("Feuil1").Range("D4", "D" &
Sheets("Feuil1").Range("D65535").End(xlUp).Row)
If d = c Then
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(0, i) = d.Offset(0, 1)
i = i + 1
End If
Next
Next

à actualiser :

Feuil1 et Feuil2 (Onglet données source et Onglet Résultat) en fonction du
nom des Onglets attribués

Range("A4", "A" & Sheets("Feuil1").Range("A65535").End(xlUp).Row) en
fonction de la position des indexes de la table 1 dans la feuille

Range("D4", "D" & Sheets("Feuil1").Range("D65535").End(xlUp).Row) en
fonction de la position des indexes de la table 2 dans la feuille

Ce code te donne le résultat souhaité en Feuil2

sur ce lien ton fichier avec la macro

http://www.cijoint.fr/cjlink.php?file=cj200810/cijstwO3ov.xls

Effaces en Feuil2 le résultat (lignes 2 à 4) et actives la macro "Requète"

Fais des essais et dis moi !!!!



FFO
Le #17700431
Salut J&B

Pour étendre cette macro à des champs supplémentaires de la table 2 il faut
rajouter autant de fois la ligne de commande qu'il y a de champs:

Sheets("Feuil2").Range("A65535").End(xlUp).Offset(0, i) = d.Offset(0, 1)


en rajoutant un indice de déplacement représenté par l'Offset ainsi :

1° champ
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(0, i) = d.Offset(0, 1)
2° champ
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(0, i+1) = d.Offset(0, 1+1)
3° champ
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(0, i+2) = d.Offset(0, 1+2
4° champ
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(0, i+3) = d.Offset(0, 1+3)

Etc....

et faire évoluer la variable i en fonction de ce nombre de champ
Pour 1 champ :
i = i+1
Pour 2 champs :
i = i+2
Pour 3 champs :
i = i+3
Pour 4 champs
i = i+4

Etc....

ce qui donne ce code pour 4 champs :

For Each c In Worksheets("Feuil1").Range("A4", "A" &
Sheets("Feuil1").Range("A65535").End(xlUp).Row)
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = c.Offset(0, 1)
i = 1
For Each d In Worksheets("Feuil1").Range("D4", "D" &
Sheets("Feuil1").Range("D65535").End(xlUp).Row)
If d = c Then
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(0, i) = d.Offset(0, 1)
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(0, i + 1) = d.Offset(0, 2)
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(0, i + 2) = d.Offset(0, 3)
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(0, i + 3) = d.Offset(0, 4)
i = i + 4
End If
Next
Next

Sur ce lien un exemple pour 4 champs

http://www.cijoint.fr/cjlink.php?file=cj200810/cij3ej657U.xls

En Feuil2 vides les lignes 2 à 4 et actives la macro "Requête"

Fais des essais et dis moi !!!!
Publicité
Poster une réponse
Anonyme