Problème de fusion de ligne avec conditions

NiCCiN

XLDnaute Nouveau
Bonjour,

Voici mon souci : j'ai un tableau composé de 6 colonnes, et regroupant les données du personnel.
Or le souci, c'est que pour chaque agent, il y a au minimum 2 lignes de créés, une reprenant le salaire brut, et l'autre la retenue patronale.

Or je souhaiterais avoir toutes ces informations, sur UNE SEULE ligne !!!!

Quelqu'un aurait-il une idée, sachant que pour certains agents, il y a plus que 2 lignes parfois !!

Voici le fichier en question, si ça peut aider.

Un grand merci d'avance pour une éventuelle piste.
 

Pièces jointes

  • Masse salariale janvier.zip
    45.2 KB · Affichages: 44

porcinet82

XLDnaute Barbatruc
Re : Problème de fusion de ligne avec conditions

Salut,

Il me semble que ton problème n'est pas tres difficile a resoudre, cependant, une petite question tout de meme. Lorsqu'une personne a 2 lignes, la seconde ligne ne contient que son Prénom et la retenue patronale. Par contre, lorsque la personne a plus de 2 lignes, il y a des informations dans la colonne Services que tu risques de perdre, ddonc comment dois-t-on tenir compte de ces lignes.

Au cas ou tu ne voudrais pas en tenir compte, le code suivant devrait faire a peu pres ce que tu souhaites :
Code:
Sub test()
Dim i%
For i = Range("C65536").End(xlUp).Row To 5 Step -1
    If IsEmpty(Cells(i, 5).Value) = True Then
        Cells(i - 1, 8).Value = Cells(i, 8).Value
        Rows(i).Delete
    End If
Next i
End Sub

@+
 

NiCCiN

XLDnaute Nouveau
Re : Problème de fusion de ligne avec conditions

Merci pour ta réponse trés rapide porcinet82.
Tu soulève en effet le problème, à savoir qu'au final, je dois me retrouver avec 1 seule et unique ligne par agent, qui va comporter TOUTES les informations contenues dans les différentes lignes.
Juste un bémol cependant : si on prends la ligne 905 à 909 (YASID), il y a là donc 5 lignes, avec surtout des données dans SERVICE qui ne sont pas semblables. Dans ce cas de figure, il faut donc arriver, si je puis dire, à fusionner la ligne 905 comportant le salaire, avec la ligne 909, comportant le retenue patronale, tout en supprimant les lignes 906, 907 et 908, car elles ne comportent elles, aucunes données dans les colonnes Salaire ou Retenue patronale.

J'espère avoir été assez clair dans mes explications, qui pour moi me semblent évidentes, mais pas forcément pour vous.
 

NiCCiN

XLDnaute Nouveau
Re : Problème de fusion de ligne avec conditions

Au cas ou cela soit trop compliqué à faire dans les conditions que j'ai évoqué sur mon post précédent, n'y aurai-il pas possibilité de "séléctionner" les infos qui nous interessent pour chaque agents, et les copier dans une nouvelle feuille : par exemple, la macro copierait toute la ligne avec le nom, prénom, service et salaire, puis irait chercher dans la ligne supplémentaire la retenue patronale, pour l'adjoindre à cette nouvelle ligne copiée ?

C'est une idée, maintenant, est-ce jouable ??? :confused:
 

porcinet82

XLDnaute Barbatruc
Re : Problème de fusion de ligne avec conditions

Salut,

Vite fais en passant, le code suivant devrait se rapprocher de ce que tu veux pour ta première proposition :
Code:
Sub test()
Dim i%, val As Double
For i = Range("C65536").End(xlUp).Row To 5 Step -1
    If IsEmpty(Cells(i, 5).Value) = True Or Cells(i, 7).Value = 0 Then
        If Not Cells(i, 8) = 0 Then val = Cells(i, 8).Value
            Rows(i).Delete
            If Not Cells(i, 7).Value = 0 Then Cells(i, 8).Value = val
    End If
Next i
End Sub

Je te laisse tester, mais je ne suis pas totalement sur. Si ca ne fonctionne pas, je reregarde un peu plus tard dans l'aprem.

@+
 

NiCCiN

XLDnaute Nouveau
Re : Problème de fusion de ligne avec conditions

Super !!!!
C'est exactement ça ........ à 1 chouilla prés : en effet, la remontée des informations des Retenues Patronales se fait bien, mais pas pour le 1er enregistrement. Donc du coup, la 1ére ligne est à 0, puis tout les enregistrements suivants sont bien placés, mais décalé de 1 ligne !!

Sinon, c'est super génial :D
 

NiCCiN

XLDnaute Nouveau
Re : Problème de fusion de ligne avec conditions

Autre petit soucis : il y a des agents, avec un salaire (plutôt un reliquat comptable) trés faible, du style 0,15€.
Il en résulte une retenue patronale de 0.
Donc lorsque la macro s'execute, elle "saute" ces agents, et donc le décalage s'installe.

Bon, je continue à examiner ta macro Porcinet, pour voir ce qui conviendrait de mieux à faire.

Merci en tout cas pour ton aide.
 

porcinet82

XLDnaute Barbatruc
Re : Problème de fusion de ligne avec conditions

Salut,

Je viens de jeter un oeil etj'ai un peu modifié le code et il me semble qu'il fonctionne mieux.
Code:
Sub test_V2()
Dim i%, val As Double
For i = Range("C65536").End(xlUp).Row To 5 Step -1
    If IsEmpty(Cells(i, 5).Value) = True Or Cells(i, 7).Value = 0 Then
        If Not Cells(i, 8) = 0 Then val = Cells(i, 8).Value
        Rows(i).Delete
        If Not Cells(i, 7).Value = 0 Then
            If Cells(i - 2, 7).Value = 0 Then Cells(i - 1, 8).Value = val
        End If
    End If
Next i
End Sub

Par contre, je n'ai pas tres bien saisie ton histoire de retenu patronnal de 0 :confused: :confused: . Donc si tu pouvais me filer un peu plus d'info...

@+
 

NiCCiN

XLDnaute Nouveau
Re : Problème de fusion de ligne avec conditions

Bonjour Porcinet.
Merci pour cette modification de code, qui en effet fonctionne mieux.

Néanmoins, le principal soucis que j'ai est le suivant :
la 1ère ligne a un soucis : la retenue patronale est à 0 !!!!
De plus, certaines lignes, dont les salaires sont trés bas (0,24€ , comme par exemple JOCELYNE - ECOLE PRIMAIRE BALIZY - 0,24). Du coup lorsque j'applique la macro, sa retenue patronale n'est pas bonne, car c'est celle de la personne en dessous qui s'affiche : sabrina avec une retenue patronale de 823,59.

Bizarre non !!!!!
 

porcinet82

XLDnaute Barbatruc
Re : Problème de fusion de ligne avec conditions

Salut NiCCiN,

Je viens de jeter un coup d'oeil vite fait, et j'ai réglé le problème pour la première ligne, par contre, je vois ou se situe le soucis pour la ligne que tu m'indique (c'est que son salaire brut est toujours 0) mais je verrais ca un peu plus tard.
Code:
Sub test_V3()
Dim i%, val As Double
For i = Range("C65536").End(xlUp).Row To 5 Step -1
    If IsEmpty(Cells(i, 5).Value) = True Or Cells(i, 7).Value = 0 Then
        If Not Cells(i, 8) = 0 Then val = Cells(i, 8).Value
        Rows(i).Delete
        If Not Cells(i, 7).Value = 0 Then
            [COLOR=blue]If i = 6 Then Cells(i - 1, 8).Value = val[/COLOR]
            If Cells(i - 2, 7).Value = 0 Then Cells(i - 1, 8).Value = val
        End If
    End If
Next i
End Sub

@+
 

Discussions similaires

Statistiques des forums

Discussions
312 842
Messages
2 092 740
Membres
105 519
dernier inscrit
faivre-roussel.ivan@orang