Obtenir une ligne avec toutes les infos des lignes sup. / noms

Fermé
atmos44 Messages postés 5 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 14 novembre 2012 - 8 nov. 2012 à 10:20
atmos44 Messages postés 5 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 14 novembre 2012 - 14 nov. 2012 à 08:21
Bonjour,

J'ai récupéré un fichier excel généré par un programme ou j'ai plusieurs lignes pour une même personnes avec des cellules vides.
je voudrais avoir une seul lignes avec les dernières informations de cellules. Je sais, je suis pas clair mais avec un exemple ce sera plus claire (j'espère)
exemple : (la première ligne est la ligne de titre, et les cellules ont comme séparateur un ;)


NOM;Prénom;service;unité;grade;quotité;maladie;date d'arrivé dans service
DUPOND;Louis;dd1;dd1-a;7026;1;00,01/01/2001
DUPOND;Louis;dd1;dd2-b;7028;1;;01/05/2009
DUPOND;Louis;dd1;;2G05;0.8;;01/08/2010
DUPOND;Louis;dd2;;2G05;0.8;;
DUPOND;Louis;2G06
MARCHAND;Laure;dd3;*dd3-a;2k05;1;00;01/01/2001
etc.....

le résultat souhaité est en ligne 5 :

DUPOND;Louis;dd2;dd2-b;2G06;0.8;00;01/08/2010

merci de votre aide.

Frédéric

PS mon tableau fait + de 15000 lignes il devrait se réduire à environ 2000 lignes.
A voir également:

7 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
8 nov. 2012 à 10:27
Bonjour,

Dans l'état, et sans plus de précisions sur les éléments à rassembler, ce que vous demandez est impossible.
Vous dites :
je voudrais avoir une seul lignes avec les dernières informations de cellules
Or dans votre exemple, vous voulez le résultat :
DUPOND;Louis;dd2;dd2-b;2G06;0.8;00;01/08/2010
Mais :
- dd2, dd2-b, 2G06, 0.8 ne sont en aucun cas les dernières informations :
dd2 ==> apparaît dans une ligne sans date,
dd2-b ==> apparaît dans une ligne ou la date n'est pas la dernière,
2 G06 ==> apparait dans une ligne sans date
0.8 ==> apparaît dans 2 lignes différentes, une avec date, une sans date.

Donc soyez plus explicite ou alors, bon courage parce que 15 000 lignes "alla mano"...
0
atmos44 Messages postés 5 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 14 novembre 2012
8 nov. 2012 à 14:44
Tout d'abord merci pour avoir essayé de me comprendre....
Je vais essayer d'être plus clair.

Dans la première ligne, Monsieur DUPOND louis est en service : (ddt1) dans une unité (ddt1-a), il a le grade : (7026), a une quotité de (1), est en code maladie : (00), et sa date d'arrivée dans le service /unité est le : (01/01/2001)

Chaque ligne apporte un changement de situation. Des fois le changement de situation est le service, des fois le grade , des fois plusieurs choses en même temps.

Donc ce que que je souhaite obtenir, c'est dans une seule ligne, les dernières informations changées. Pour DUPOND Louis la ligne que je souhaite avoir est :

Son dernier service, c'est a dire DDT2 (qui se trouve en ligne 4) sa dernière unité ddt2-b (qui se trouve en ligne 2), son dernier grade (qui se trouve ligne 5), sa quotité de travail 0,8 (qui se trouve en ligne 4), sa dernière maladie 00 (qui est en ligne 1) et enfin sa dernière date d'affectation 01/08/2010 (qui est en ligne3)

donc soit les informations descendent à la ligne 5 ou soit se créé automatiquement une ligne 6 qui intègre toutes les dernières informations (soit: DUPOND;Louis;dd2;dd2-b;2G06;0.8;00;01/08/2010)
Merci par avance
PS j'ai oublié 1 ; dans la ligne 5 avant 2G06
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
8 nov. 2012 à 14:56
Non tu n'es toujours pas clair..............

Donc ce que que je souhaite obtenir, c'est dans une seule ligne, les dernières informations changées.

Comment, moi qui ne connais rien à ton tableau ni à tes données, je peux différencier les informations comme étant les dernières changées...

Dans ton exemple : comment je sais que dd2 est le dernier service de Mr Dupont?
0
atmos44 Messages postés 5 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 14 novembre 2012
8 nov. 2012 à 15:48
en fait au plus clair et plus simple c'est : si une cellule est vide, prendre la valeur de celle du dessus etc.. jusque trouver une information.

exemple :

A1 = dupond, B1 = voiture, C1 = rouge, D1 = rayée
A2 = dupond, B2 = "", C2 = bleue, D2 = ""
A3 = dupond, B3 = "", C3 = "", D3 = unie


Mon résultat souhaité est :
dupond, voiture, bleue, unie

Voila
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
8 nov. 2012 à 16:53
C'est enfin plus clair.
Relance moi demain matin que je m'y mette!...
Bonne soirée.
0
Mike-31 Messages postés 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 5 110
8 nov. 2012 à 19:04
Salut le fil,

J'ai retiré mon post, erreur de discussion
cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
9 nov. 2012 à 09:04
Bonjour,

Dernières questions avant de me lancer :
- y a t'il toujours, au maximum, 8 colonnes? de A à H?
- dans ton classeur, puis je mettre les lignes de résultats dans une feuille "Feuil2"?
0
atmos44 Messages postés 5 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 14 novembre 2012
9 nov. 2012 à 10:45
non, il y a au moins 15 colonnes. et oui le résultat peut etre dans une autre feuille (feuil2)
Petite précision, supplémentaire au cas ou, en fait ce que je souhaite si la première demande est impossible, c'est si il y a une cellule vide, il faut la remplir avec la cellule de dessus qui est remplie

merci encore de ton aide
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
9 nov. 2012 à 10:55
il y a au moins 15 colonnes peux tu être plus précis???
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
Modifié par pijaku le 9/11/2012 à 11:37
Bon, n'étant pas moi même programmeur, il subsiste un p'tit bug...
Cette procédure insère une ligne après chaque "groupe" de même NOM-Prénom, sauf pour la dernière ligne. Pour celle-ci, elle remplace la dernière ligne...
Peu importe le nombre de lignes ou de colonnes.
ATTENTION, cette macro efface préalablement toutes les données contenues dans la feuille "Feuil2"...

Pour info : testée sur 15 800 lignes et 16 colonnes, temps d'exécution : 17 secondes et quelques....

Option Explicit 

Sub test() 
Dim tabDonnees(), T_Out() As String 
Dim lngDrLig&, drCol&, i&, j&, k&, l&, m&, cpt& 

j = 0 
drCol = Range("A1").SpecialCells(xlCellTypeLastCell).Column 
lngDrLig = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row 
tabDonnees = Range(Cells(1, 1), Cells(lngDrLig, drCol)) 
For i = 2 To UBound(tabDonnees, 1) 
    i = i - 1 
    cpt = 0 
    Do 
        i = i + 1 
        j = j + 1 
        cpt = cpt + 1 
        ReDim Preserve T_Out(1 To drCol, 1 To j) 
        For k = 1 To drCol 
            T_Out(k, j) = tabDonnees(i - 1, k) 
        Next k 
        If i = UBound(tabDonnees, 1) Then Exit Do 
    Loop While tabDonnees(i, 1) & tabDonnees(i, 2) = tabDonnees(i - 1, 1) & tabDonnees(i - 1, 2) 
    j = j + 1 
    ReDim Preserve T_Out(1 To drCol, 1 To j) 
    For l = 1 To drCol 
        For m = 1 To cpt 
            If T_Out(l, j) = "" Then 
                If T_Out(l, j - m) <> "" Then 
                    T_Out(l, j) = T_Out(l, j - m) 
                    Exit For 
                End If 
            Else 
                Exit For 
            End If 
        Next m 
    Next l 
Next i 
Application.ScreenUpdating = False 
With Sheets("Feuil2") 
    .Cells.Clear 
    For i = 1 To UBound(T_Out, 1) 
        For j = 1 To UBound(T_Out, 2) 
            .Cells(j, i) = T_Out(i, j) 
        Next 
    Next 
    .Rows(1).Delete 
    .Activate 
End With 
Application.ScreenUpdating = True 
End Sub

Cordialement,
Franck P
0
atmos44 Messages postés 5 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 14 novembre 2012
14 nov. 2012 à 08:21
Bonjour Pijaku, désolé pour ce temps à répondre mais j'etais malade et ne rentre au boulo que ce matin. Je vais tester ta formule aujourd'hui et te tiens au courant. En tous les cas, MERCI beaucoup de ton aide.

cordialement,

Frédéric
0