Macro: séparer les données contenues dans une ligne et les répartir sur une feuille

Alex92

XLDnaute Nouveau
Bonjour à tous,

Tout d'abord merci de me lire!

Dans le cadre d'un stage, on ma demandé il y a deux jours de simplifier le reporting mensuel de collaborateurs en rendant une partie des saisies du tableau final automatique (données à aller piocher sur une autre feuille Excel).

Dans le tableau final, il y a donc une partie des colonnes qui seront renseignées à la main, une autre issues automatiquement d'une base de données. Seulement, je dois pouvoir sélectionner quelles données je veux importer et leur placement dans le nouveaux tableaux (la forme des deux tableaux n'étant pas identique...).

> Dans mon essai joint, impossible de séparer les données contenues dans une ligne sélectionnée par un X pour les répartir une à une dans le tableau destination.

Je vous joins mon fichier, n'hésitez pas à m'orienter sur des tutos ou des sujets similaires (bien que je n'en ai pas trouvé :?), même si mon but final est que le fichier fonctionne, je veux avant tout apprendre comment faire ;)

Merci d'avance et bonne soirée :D

Alex
 

Pièces jointes

  • Alex_ Essai1.xls
    48.5 KB · Affichages: 80

Staple1600

XLDnaute Barbatruc
Re : Macro: séparer les données contenues dans une ligne et les répartir sur une feui

Bonjour et bienvenue

Mon petit Alex, tu viens de me réconcilier avec les nouveaux membres du forum

  • Formule de politesse OK
  • Explications OK
  • Fichier exemple joint OK
  • Implication du demandeur à la résolution de sa question OK

Ça me rassure de savoir qu'il y a encore des personnes comme toi qui s’inscrivent sur XLD.

Tu me diras, c'est bien beau toutes ces gentillesse à ton égard, mais ça t'aide pas d'un chouïa.

C'est vrai, mais je laisse ce plaisir à d'autres membres du forum ;).

Ravi que tu rejoignes la communauté XLDIENNE, mais attention à l'addiction qui guette au coin de la cellule ;)
 

Alex92

XLDnaute Nouveau
Re : Macro: séparer les données contenues dans une ligne et les répartir sur une feui

Bonjour à tous,

Un petit Up pour ne pas laisser ce topic prendre la poussière!

Dans l'attente de toute suggestion,

Bonne aprè-midi,

Cordialement

Alex
 

VDAVID

XLDnaute Impliqué
Re : Macro: séparer les données contenues dans une ligne et les répartir sur une feui

Bonjour Alex92,

Si j'ai bien compris, tu veux pouvoir répartir les données par ligne en fonction de la présence du "x" ou non en colonne Y et en fonction des colonnes.
J'ai fais un test en P.J en répartissant les données en fonction des intitulés de chaque colonne.
Est-ce ce que tu voulais faire?

Bonne journée !
 

Pièces jointes

  • Alex_%20Essai1(1).xls
    63.5 KB · Affichages: 67
Dernière édition:

Alex92

XLDnaute Nouveau
Re : Macro: séparer les données contenues dans une ligne et les répartir sur une feui

Bonjour VDAVID !

Merci d'abord pour ton temps et ton intervention,

j'ai fais un premier essai et cela semble concluant! Quelle commande VBA as-tu ajouté?

Je confirmerai ce code demain dans la matinée en condition réelle.

Pour l'heure un grand merci !!

Bonne soirée,

Alex
 

Alex92

XLDnaute Nouveau
Re : Macro: séparer les données contenues dans une ligne et les répartir sur une feui

Bonjour VDAVID,

Tout d'abord merci pour tes explications!

Le code fait son boulot, les cellules sont correctement réparties sur les colonnes par association des titres (Feuil1 / Feuil2).

Sur la forme, y a t-il un moyen de conserver le style (couleurs, bordures...) lors de l'exportation?

:confused:

Je joins le fichié modifié avec la mise en avant du problème,

dans l'attente de vous lire,

bonne journée,

Alex
 

Pièces jointes

  • Alex_essai2.xls
    253.5 KB · Affichages: 58
Dernière édition:

VDAVID

XLDnaute Impliqué
Re : Macro: séparer les données contenues dans une ligne et les répartir sur une feui

Bonjour Alex92,

Tu peux remplacer le code de Sub Copier() par:

Code:
Sub copier()
Dim Cel As Range     'Variables
Dim myRange As Range
Dim Ligne As Integer
Set myRange = Range("Y2:Y40") 'Plage où la condition "x" est rentrée
Ligne = Sheets("Feuil2").Range("A65536").End(xlUp).Row 'Détermine la ligne où commencer la macro
For Each Cel In myRange 'Boucle sur les cellules de la colonne Y
If Cel.Value = "x" Then 'Vérifie que la case Y = x
Ligne = Ligne + 1 'Ligne où copier +1 (Renvoie la ligne de la première cellule non-vide de la colonne A
Absc = Cel.Row 'Numéro de ligne pour laquelle la condition est vérifiée
Ordo = Cel.Column 'Numéro de colonne pour laquelle la condition est vérifiée
Dim i& 'Boucle sur le nombre de colonne de ton tableau d'origine
For i = 1 To 24 Step 1 'Colonne A à X de ta première feuille où se trouve le tableau source
Dim j&
For j = 1 To 24 ' Colonne de A à X içi mais modifiable selon le nombre de colonnes souhaitées [Toujours l'intitulé en première ligne]
If Cells(1, i).Value = Sheets("Feuil2").Cells(1, j).Value Then 'Vérifie que l'intitulé de la première colonne correspond à
Sheets("Feuil2").Cells(Ligne, j).Value = Cells(Absc, i).Value 'Toutes les colonnes ayant le bon intitulé reçoivent la valeur correspondante sous réverse que la première condition soit validée
Cells(Absc, i).Copy
Sheets("Feuil2").Cells(Ligne, j).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
End If
Next j
Next i
Sheets("Feuil2").Cells(Ligne, 26).Value = Cells(Absc, Ordo).Value & Absc ' Renvoie le "x" et le numéro de la ligne en feuil1 enlever le "& Absc" pour rajouter uniquement les "x"
End If
Next Cel
End Sub

Les formats seront pris en comptes !
Bonne journée !
 

Alex92

XLDnaute Nouveau
Re : Macro: séparer les données contenues dans une ligne et les répartir sur une feui

Bonjour VDAVID,

Ca fonctionne parfaitement au vu du cahier des charges initial. Merci beaucoup pour tes réponses rapides et détaillées.

Si je veux qu'à la fin de la macro, la feuil2 soit renvoyée et non pas la Feuil1, y a t'il une commande? Ou la macro ne gère pas l'affichage? (Petit luxe qui rendrait l'opération encore plus efficace).

Merci d'avance pour ton aide,

bonne après-midi,

Alex
 

VDAVID

XLDnaute Impliqué
Re : Macro: séparer les données contenues dans une ligne et les répartir sur une feui

Re bonjour Alex92,

Si tu veux afficher la feuil2 à la fin de la macro(c'est ce que j'ai compris), tu peux placer sur la ligne avant le End sub() ce code:

Code:
Sheets("Feuil2").Select

Attention le "Feuil2" représente le nom de ta feuille et non pas son nom dans le projet VBA de ton fichier !
 

Alex92

XLDnaute Nouveau
Re : Macro: séparer les données contenues dans une ligne et les répartir sur une feui

Re bonjour VDAVID,

Merci pour ta précision, c'était exactement mon souhait.

Grâce à ton aide j'ai pu répondre à la demande du client.

Un grand merci spécialement à VDAVID et au forum XLD en général qui permet ces échanges,

:D

A bientôt pour de nouveaux défis :cool:

Alex
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 324
Membres
103 179
dernier inscrit
BERSEB50