Macro pour incrémenter des lignes pour fichier import

Bonjour à tous,

J'ai pour habitude de récupérer des codes et les adapter à mes besoins.

Cependant après plusieurs heures de recherche sur le web rien à faire je ne trouve pas ce cas et j'ai donc besoin de votre aide.

J'ai un fichier avec des noms de salariés unique affichés en ligne et x colonnes associées.

Dans chaque colonne est indiquée une X pour savoir si oui ou non la personne à l'item.

Ce qu'il me faudrait c'est une macro (avec une boucle je suppose) qui repère pour chaque salarié quelles colonnes comportent une X et crée la ligne associé dans un onglet séparé.

Ci-joint un fichier d'exemple. En feuille 1 le visuel du fichier que j'ai actuellement et en feuil 2 le résultat attendu.

Merci par avance pour votre aide.

7test2.xlsm (19.18 Ko)
9test2.xlsm (19.18 Ko)

bonjour

sélectionner ta plage, faire menu Données Obtenir de plage

ça ouvre une fenêtre

clic droit sur l'en-tête de ta 1ère colonne, "Dépivoter les autres colonnes"

"charger"

par la suite, il te suffit de cliquer Requête, "actualiser"

Excel est magique

amitiés

12copie-de-test2.xlsm (29.98 Ko)

Slt jgauriat,

Slt jmd et bienvenue sur le forum,

à tester

Option Compare Text
Sub copierx()
Dim x As Worksheet, y As Worksheet
Dim i As Integer, j As Integer, lastrow_x As Integer, lastrow_y As Integer, lastcol_x As Integer
Dim z As Range

Set x = ThisWorkbook.Sheets(1)
Set y = ThisWorkbook.Sheets(2)
Set z = x.UsedRange

lastrow_x = z.Rows.Count
lastcol_x = z.Columns.Count

y.UsedRange.Clear
y.Cells(1, 1).Value = "MATRICULE"
y.Cells(1, 2).Value = "ITEM"

lastrow_y = y.Range("A1").Rows.Count + 1

    For i = 2 To lastrow_x
        For j = 2 To lastcol_x
            If x.Cells(i, j).Value = "x" Then
                y.Cells(lastrow_y, 1).Value = x.Cells(i, 1).Value
                y.Cells(lastrow_y, 2).Value = x.Cells(1, j).Value
                lastrow_y = lastrow_y + 1
            End If
        Next j
    Next i
End Sub

Bonjour JMD,

Merci pour cette solution, mais en ce qui me concerne je n'ai pas l'option "Dépivoter les colonnes" cf imprim écran.

Bonjour m3ellem1,

Merci pour ta solution, elle fonctionne parfaitement!

Autre sujet, auriez vous par hasard une macro sous la main qui permet de compiler tous les classeurs au sein d'un même dossier?

Je m'explique, j'ai actuellement une 20aine de classeur comme celui sur lequel nous venons tous les 3 de travailler avec environ 800 lignes par classeur.

Je vais appliquer la macro de m3ellem1 à tous les classeurs pour les avoir sous le format de la feuil2.

Il me faudrait une macro qui récupère les infos de tous les classeurs au sein d'un seul classeur et qui supprime les doublons.

screen shot 04 05 19 at 09 06 am

Bonjour JMD,

Merci pour cette solution, mais en ce qui me concerne je n'ai pas l'option "Dépivoter les colonnes" cf imprim écran.

re

en effet, j'utilise un terme qui est consacré par l'usage, mais Microsoft écrit "supprimer le TCD des autres colonnes"

honte à moi

re re

menu Données, obtenir "de classeur" (c'est ainsi que le grand Microsoft nomme les répertoires, ahhhhhh les termes microsoftiens, c'est pas top ! )

et hop, tous tes classeurs sont récupérés

amitiés

Bonjour,

@ jmd,

Dans ta proposition, si un salarié n'a pas d'item, il disparaît !...

re

salut Jean-Eric

Expareil si un item n'est associé à aucun salarié

sur le fond, on part d'un tableau de base de données de type N-N (une "mesure") , alors qu'on n'a pas les tableaux de "dimensions"

amitiés

Re,

Pour résumer ta proposition n'est pas valide.

Cdlt.

re

Ce qu'il me faudrait c'est une macro (avec une boucle je suppose) qui repère pour chaque salarié quelles colonnes comportent une X et crée la ligne associé dans un onglet séparé.

on repère les x et on crée une ligne. Pas de x, pas de ligne du tout.

donc la solution répond au besoin

amitiés

Oui JMD,

ta solution est parfaite pour moi. Merci beaucoup

En ce qui concerne la compilation des données via le menu données, je n'y arrive pas.

Quelqu'un aurait une macro pour cela plutot?

Rechercher des sujets similaires à "macro incrementer lignes fichier import"