comment transformer une colonne en ligne

  • Initiateur de la discussion Initiateur de la discussion tapha20
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

tapha20

XLDnaute Occasionnel
Bonjour à tous,

Depuis la matinnée je galère à trouver une solution à mon problème, c'est trop compliqué.

Je vous explique:

vous trouvez ci-dessous, une doc excel, avec avec 6 colonnes( numéro d'affaire, CE/IR, Primo appel, excpliquation devis, sécuris.MES et R2)

dans les ligne on trouve, numéro corrspond au num d'affaire, nom et prénom représentent les CE/IR, ce qui reste c'est des dates des autres colonnes.

Je voudrais basculer les 4 dernières colonnes en ligne, et supprimer les ligne qui ne contiennent aucune date.

J'espère que vous comprenez ce que j'ai écrit, si non je vous réexplique.

Aidez moi svppppppppppp, je galère vraiement*.

Cordialement
 

Pièces jointes

Re : comment transformer une colonne en ligne

merci infiniment de votre réponse, c'est vraiment ce que je recherchait, merci beaucoup

Cela dit, j'ai essayé de comprendre la macro, j'avoue que je n'arrive pas, or, il faudrait bien que la comprenne pour pouvoir la reproduire au document de l'entreprise (celui que j'ai mis est évidement un vrai, confidentialité oblige).

Est- ce que vous pouvez me donner plus d'explication, un raisonnement à suivre.

Si vous ne pouvez pas c'est pas grave, vous m'avez déjà rendu un grand service.

Merci encore.

Cordialement
 
Re : comment transformer une colonne en ligne

Re,

Voici le code la macro, commenté cette fois :

VB:
Sub tri()
   ' Déclaration du numéro de la ligne sur laquelle on doit recopier les informations dans la feuille destination
    Dim numLigne As Integer
    ' On initialise le numéro de ligne à la première ligne vide de la feuille destination
    numLigne = 2
    'On parcours les lignes de la  feuille source jusqu'à la dernière ligne non-vide
    For i = 2 To Sheets(Feuil1.Name).Range("A65536").End(xlUp).Row
        'On parcours les colonnes concernant les dates de la ligne i
        For j = 2 To Sheets(Feuil1.Name).Range("IV" & i).End(xlToLeft).Column
            'Si la colonne n'est pas vide, et donc a pour valeur une date alors
            If Sheets(Feuil1.Name).Range("A" & i).Offset(0, j).Value <> "" Then
                'On ajoute dans la 1ère colonne de la ligne numLigne le numéro de l'affaire (feuille destination)
                Sheets(Feuil3.Name).Range("A" & numLigne).Value = Sheets(Feuil1.Name).Range("A" & i).Value
                'On ajoute dans la 2ème colonne de la ligne numLigne l'IR (feuille destination)
                Sheets(Feuil3.Name).Range("B" & numLigne).Value = Sheets(Feuil1.Name).Range("B" & i).Value
                 'On récupère ici le segment en remontant en haut de la colonne contenant la date et on l'ajoute dans la 3ème 
                 ' colonne de la ligne numLigne
                Sheets(Feuil3.Name).Range("C" & numLigne).Value = Sheets(Feuil1.Name).Range("A1").Offset(0, j).Value
                'On ajoute la date dans la dernière colonne de la ligne numLigne
                Sheets(Feuil3.Name).Range("D" & numLigne).Value = Sheets(Feuil1.Name).Range("A" & i).Offset(0, j).Value
                'Enfin, on incrémente la variable numLigne pour que la prochaine copie de données se fasse à la ligne suivante
                numLigne = numLigne + 1
                'Et on sort de ce For, ce qui revient à passer à la ligne suivante de la feuille source
                Exit For
            End If
        Next
    Next
End Sub


J'espère que c'est assez clair, n'hésite pas si il y'a certaines parties qui posent encore problème.

Bonne soirée,
WUTED
 
Re : comment transformer une colonne en ligne

J'essaye d'appliquer la formule sur mon fichier, je vérifie la macro pas à pas (F8) elle bloque à cette ligne:

For j = 2 To Sheets(tri.appels.Name).Range("IV" & i).End(xlToLeft).Column

ça m'affiche une boite de dialogue avec cette phrase: erreur d'exécution 424, objet requis.

Je ne sais pas ce que cela veut dire

pouvez vous m'en dire plus.

cordialement
 
Re : comment transformer une colonne en ligne

Bonjour,

tri.appels.Name? Je pense que l'erreur vient de là, il faut que tu mettes en paramètre de Sheets le nom de ta feuille, donc si tu as renommé ta feuille "appels" et qu'il en sera toujours ainsi, tu peux mettre directement Sheets("appels"), seulement si un jour tu changes le nom, il faudra modifier ta macro. Alors que ton objet feuille en lui-même est Feuil1 donc en mettant Sheets(Feuil1.Name) par exemple, tu es assuré de toujours récupérer le nom de ta première feuille,que tu l'ai modifié ou non. J'espère que c'est assez clair.

Bonne soirée,
WUTED
 
Dernière édition:
Re : comment transformer une colonne en ligne

voilà j'ai modifié, la macro notamment les lignes correspondantes, mais il ne se passe rien, je met la macro au cours et il y a rien qui se passe.

est-ce que vous pouvez me donner plus de précisions????

cordialement



Sub Modif_appels()
'
' Modif_appels Macro
'
' Déclaration du numéro de la ligne sur laquelle on doit recopier les informations dans la feuille destination
Dim numLigne As Integer
' On initialise le numéro de ligne à la première ligne vide de la feuille destination
numLigne = 2
'On parcours les lignes de la feuille source jusqu'à la dernière ligne non-vide
For i = 2 To Sheets("tri.appels").Range("A65536").End(xlUp).Row
'On parcours les colonnes concernant les dates de la ligne i
For j = 2 To Sheets("tri.appels").Range("IV" & i).End(xlToLeft).Column
'Si la colonne n'est pas vide, et donc a pour valeur une date alors
If Sheets("tri.appels").Range("A" & i).Offset(0, j).Value <> "" Then
'On ajoute dans la 1ère colonne de la ligne numLigne le numéro de l'affaire (feuille destination)
Sheets("modif.appels").Range("A" & numLigne).Value = Sheets("tri.appels").Range("A" & i).Value
'On ajoute dans la 2ème colonne de la ligne numLigne l'IR (feuille destination)
Sheets("modif.appels").Range("B" & numLigne).Value = Sheets("tri.appels").Range("B" & i).Value
'On récupère ici le segment en remontant en haut de la colonne contenant la date et on l'ajoute dans la 3ème
' colonne de la ligne numLigne
Sheets("modif.appels").Range("C" & numLigne).Value = Sheets("tri.appels").Range("A1").Offset(0, j).Value
'On ajoute la date dans la dernière colonne de la ligne numLigne
Sheets("modif.appels").Range("D" & numLigne).Value = Sheets("tri.appels").Range("A" & i).Offset(0, j).Value
'Enfin, on incrémente la variable numLigne pour que la prochaine copie de données se fasse à la ligne suivante
numLigne = numLigne + 1
'Et on sort de ce For, ce qui revient à passer à la ligne suivante de la feuille source
Exit For
End If
Next
Next

End Sub
 
Re : comment transformer une colonne en ligne

Re,

Le plus simple serait que tu mettes en pièce jointe ton fichier "réel" avec de fausses données si nécessaire, mais avec les même noms de feuille, et les mêmes colonnes / lignes, sinon je peux pas vraiment t'aider.
 
Re : comment transformer une colonne en ligne

oui je comprends ce que vous voulez dire, le souci est que le dossier comporte plusieurs feuilles excel dans un même fichier, le données qui sont à traiter proviennent d'une base de données, ces des infos, sélectionnées modifiées, avec des numéro s de contrats, nom et prénom...

je vais essayer quand même de vous mettre un fichier, laissez moi un peu de temps.
est ce que vous pouvez me communiquer votre adresse comme ça je vous en verrai le fichier???
 
Re : comment transformer une colonne en ligne

Re,

C'est un peu dommage d'en faire une discussion privée donc idéalement, met la en pièce jointe sur ce fil, je t'ai quand même envoyé mon mail en MP au cas où.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

L
Réponses
6
Affichages
2 K
leblond
L
Retour