Tableau excel: mettre une ligne en colonne

Maxoverfred

XLDnaute Occasionnel
Bonjour, j'ai fait quelques recherches sur le croisement de données mais généralement on ne parle pas de mon cas 'simple'
Voici la problématique, j'ai des valeurs dans mes enregistrements que j'aimerais mettre en colonne...

en exemple cela donne ceci, j'ai besoin de

NOM NATIONALITE VILLE
--------------------------------------------
TOTO1 Belge Bruxelles
TOTO2 Espagnol Madrid
TOTO3 Italie Rome
TOTO4 Italie Palerme

Et je voudrais donc

1) Croisement des données

NOM BELGE ESPAGNOL ITALIE
---------------------------------------------------
TOTO1 Bruxelles
TOTO2 Madrid
TOTO3 Rome
TOTO4 Palerme

Donc pour distinguer de manière unique les valeurs dans la colonne Nationalité, cela peut aller avec la fonction suivante

________________________
Sub test()
ListeValUniques Range('K2:K50'), Range('O1')
End Sub

Sub ListeValUniques(PlageSrc As Range, CellDest As Range)
Dim Arr1, Elt, Arr2(), Coll As New Collection

If PlageSrc.Columns.Count > 1 Then Exit Sub
Arr1 = PlageSrc.Value

For Each Elt In Arr1
On Error Resume Next
Coll.Add Elt, CStr(Elt)
If Err.Number = 0 Then
ReDim Preserve Arr2(1 To Coll.Count)
Arr2(Coll.Count) = Elt
End If
On Error GoTo 0
Next
CellDest.Resize(Coll.Count).Value = _
Application.Transpose(Arr2)
End Sub
______________________
2) Faut juste que je lui dise de mettre les valeurs uniques dans les colonnes à droite de la dernière colonne.
3) Parcourir tous les records de ma feuille et à chaque fois remplir la nouvelle colonne avec la valeur correspondante.

Le but étant de réduire les interventions manuelles, le fait de construire un pivottable n'est pas retenu.. car j'aimerais que ce soit une manoeuvre automatique en arrière plan qui fasse tout le travail et vu que le fichier source change chaque semaine..
Si quelqu'un a une piste rapide, merci.

Message édité par: maxoverfred, à: 13/08/2005 22:17

Message édité par: maxoverfred, à: 14/08/2005 11:04
 

marco57

XLDnaute Occasionnel
Bonjour Maxoverfred et le forum,

Je te joins un fichier qui, je pense, répondra à tes attentes.
N'hésite pas à revenir si je suis à coté de la plaque.

A+

Marco
[file name=CroisementDonnees.zip size=11513]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/CroisementDonnees.zip[/file]
 

Pièces jointes

  • CroisementDonnees.zip
    11.2 KB · Affichages: 79

marco57

XLDnaute Occasionnel
re bonjour Maxoverfred,
Normalement, tu n'as pas grand chose à faire si ce n'est
de nommer deux cellules:
1) celle contenant l'entête de colonne des noms (je l'ai nommé 'Titre_Nom')
et
2)celle situé dans lae coin en haut et à gauche de ton champ de destination (je l'ai nommé 'Cible')

si je ne me suis pas planté, ça doit marché du premier coup

Bon ammusement

Marco
 

Maxoverfred

XLDnaute Occasionnel
Oui j'ai juste un souci avec la fonction match a certains moments.. je te mets mon fichier en annexe... étrange.
En fait ma colonne contient du numérique dans le vrai exemple et nom la ville en string.. donc ici, quand il retrouve le même entête de colonne, il se plante dans la fonction match..

Message édité par: maxoverfred, à: 14/08/2005 17:03
 

Maxoverfred

XLDnaute Occasionnel
Voici [file name=Croisement.zip size=12225]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Croisement.zip[/file]
 

Pièces jointes

  • Croisement.zip
    11.9 KB · Affichages: 55
  • Croisement.zip
    11.9 KB · Affichages: 58
  • Croisement.zip
    11.9 KB · Affichages: 55

marco57

XLDnaute Occasionnel
eh oui, je me suis planté il faut écrire :

IndPays = Application.WorksheetFunction.Match(Données(i, 2), Range(.Offset(0, 1), Cells(.Row, 256)),0)

au lieu de

IndPays = Application.WorksheetFunction.Match(Données(i, 3), Range(.Offset(0, 1), Cells(.Row, 256)))

Désolé pour cette étourderie.

Si tu veux le fichier corrigé, je te l'envoie sur demande

Marco
 

Maxoverfred

XLDnaute Occasionnel
Re
Bon comme Marco tu as l'air en forme B)
Voici l'étape suivante.

Reprenont le problème du début mais disons que j'ai deux feuillles
Feuille 1:
NOM NATIONALITE VILLE
--------------------------------------------
TOTO1 Belge Bruxelles
TOTO2 Espagne Madrid
TOTO3 Italie Rome
TOTO4 Italie Palerme

Feuille 2:
NOM MONTANT HEURE CP
--------------------------------------------
TOTO1 100 18:00 1000
TOTO2 98 17:45 1200
TOTO3 87 16:12 5000
TOTO4 124 12:23 2300

En faisant tourner ta petite routine, il faut que les données soient collées dans la feuille 2, tu me vois donc venir il me faut

NOM MONTANT HEURE CP BELGE ESPAGNE ITALIE
-----------------------------------------------------------------------
TOTO1 100 18:00 1000 Bruxelles
TOTO2 98 17:45 1200 Madrid
TOTO3 87 16:12 5000 Rome
TOTO4 124 12:23 2300 Palerme

C'est ce que j'appele du croisé dynamique manuel :):):)

Je crois qu'avec un vlookup commandé par vba je devrais m'en tirer..
 

marco57

XLDnaute Occasionnel
Bonsoir Maxoverfred et le Forum,
Désolé mais pour une fois il n'a pas plu aujourd'hui et j'en ai profité pour bosser dehors.
J'ai vu ton post un peu tard. J'aurai préféré travaillé tout de suite sur la totale. C'est plus facile quand toutes les cartes sont sur la table.
S'il n'y en a plus d'autre, je me pencherais sur ton Pb demain soir car il faut que je pense à dormir un peu. Demain c'est debout à la fraiche vers 5 heures.
Au fait pourquoi n'envoies-tu pas des petits fichiers au lieu d'envoyer du texte qui malgré les probables tabulations ne passe pas dans les post. De plus ça m'éviterait de devoir saisir ton exemple.
Si tout va bien, tu devrais avoir ta solution demain soir.

Bonne nuit

Marco
 

Maxoverfred

XLDnaute Occasionnel
No problemo marco, deux petites explications, j'envoi par morceau car c'est la meilleur manière d'apprendre pour moi, et je poste une fois que je ne trouve pas.. ou que je passe trop de temps à chercher ou que j'arrive trop short dans les délais.. ou qu'il y a d'autres priorités.. donc le plus important est de comprendre le savoir de l'autre pour l'exploiter plus tard seul.
Ici, j'ai trouvé comment rechercher la valeur dans la deuxième feuille mais cela me semble lourd.. pour l'action...

Je poste du texte, car souvent mais c'est vrai que c'est pas l'exemple ici, mes fichiers comportent à chaque fois des données professionnelles qu'il me faudrait plus de temps à remettre en exemple insignifiant...

voilou, bon début de semaine.
 

Statistiques des forums

Discussions
312 321
Messages
2 087 265
Membres
103 501
dernier inscrit
talebafia