XL 2019 récupération automatique de données

serras

XLDnaute Occasionnel
Bonjour

Après plusieurs essais infructueux je sollicite la communauté pour trouver la solution à mon problème.

J'ai un fichier de données avec beaucoup de colonnes et je souhaiterais la simplifier en ne reprenant que les cellules non vides.

J'ai créé un fichier test en PJ qui illustre le cas. Sur la Feuil2 toutes les infos brutes. Sur la feuil1 mon objectif de présentation allégées (dans le vrai fichier les plages sont plus importantes : pas 3 colonnes mais une vingtaine)

Merci de votre aide.

(je suis sur Excel Microsoft Office professionnel Plus 2019)

Lou.
 

Pièces jointes

  • fichier test - Copie.xlsx
    12.8 KB · Affichages: 10

vgendron

XLDnaute Barbatruc
Bonjour

dans ta feuille1, tu n'as pas rempli les colonnes attendues..
pour Pierre, en feuille 2, il y a 3 colonnes sur 6 (vertes) remplies
en feuille1, il n'y a que 3 colonnes ==> Quelles infos vont ou?
Que se passe t il si il y a 6 colonnes remplies?
 

Phil69970

XLDnaute Barbatruc
Bonjour @serras et Vincent

@serras

dans le vrai fichier les plages sont plus importantes : pas 3 colonnes mais une vingtaine

Il serait plus facile pour pouvoir transposer nos solutions que ton fichier de test soit représentatif

C'est quoi représentatif ?

- représentatif, même organisation des lignes et des colonnes, mêmes libellés, même nom des TS, mêmes noms de feuilles...
- anonymisé, pas de données personnelles réelles tels nom, n° sécu, adresse ... remplacé par Nom1, Nom2 etc ....
- simplifié, une quinzaine de lignes reproduisant l'ensemble des différents cas envisageables (Avec le résultat souhaité éventuellement)

Si cela fonctionne sur le fichier fourni et pas sur le vrai fichier c'est qu'il n'est en rien représentatif ou que tu n'as pas su transposer ce qui devrait être un simple copier coller du code.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Serras, Vgendron, Phil,
Avec le peu que j'ai compris, mais au moins on saura ce qui ne va pas :
La macro s'exécute lorsqu'on sélectionne la Feuil1 :
VB:
Sub Worksheet_Activate()
Dim DL%, DC%, L%, C%, Col%
Application.ScreenUpdating = False
With Sheets("Feuil2")
    DL = .[A10000].End(xlUp).Row
    DC = .Cells(1, Columns.Count).End(xlToLeft).Column
    [A2:Z1000].ClearContents
    For L = 2 To DL
        Col = 0: Cells(L, "A") = .Cells(L, "A")
        For C = 2 To DC
            If Left(.Cells(1, C), 7) = "DOMAINE" Then
                If Col = 0 Then Col = 2 Else Col = Col + 3
                Cells(L, Col) = .Cells(L, C)
            Else
                If Left(.Cells(1, C), 10) = "si domaine" Then
                    If .Cells(L, C) <> "" Then Cells(L, Col + 1) = Cells(L, Col + 1) & "," & .Cells(L, C)
                    If Left(Cells(L, Col + 1), 1) = "," Then Cells(L, Col + 1) = Mid(Cells(L, Col + 1), 2)
                Else
                    If .Cells(L, C) <> "" Then Cells(L, Col + 2) = Cells(L, Col + 2) & "," & .Cells(L, C)
                    If Left(Cells(L, Col + 2), 1) = "," Then Cells(L, Col + 2) = Mid(Cells(L, Col + 2), 2)
                End If
            End If
        Next C
    Next L
End With
Columns.AutoFit: Rows.AutoFit
End Sub
 

Pièces jointes

  • fichier test - Copie (1).xlsm
    19.9 KB · Affichages: 2

serras

XLDnaute Occasionnel
Bonjour

dans ta feuille1, tu n'as pas rempli les colonnes attendues..
pour Pierre, en feuille 2, il y a 3 colonnes sur 6 (vertes) remplies
en feuille1, il n'y a que 3 colonnes ==> Quelles infos vont ou?
Que se passe t il si il y a 6 colonnes remplies?
désolé. il n'y a que la premier colonne de chaque bloc couleur qui comporte toujours une info ( à savoir B H et N dans feuil2)
pour les "si domaine X xsur quel sujet" il ne peut y avoir qu'une cellule remplie ou aucune
pour les "si autre domaine lequel" il ne peut que y avoir une ou aucune mais jamais 2

j'espère avoir été plus clair
 

serras

XLDnaute Occasionnel
Bonjour @serras et Vincent

@serras



Il serait plus facile pour pouvoir transposer nos solutions que ton fichier de test soit représentatif

C'est quoi représentatif ?

- représentatif, même organisation des lignes et des colonnes, mêmes libellés, même nom des TS, mêmes noms de feuilles...
- anonymisé, pas de données personnelles réelles tels nom, n° sécu, adresse ... remplacé par Nom1, Nom2 etc ....
- simplifié, une quinzaine de lignes reproduisant l'ensemble des différents cas envisageables (Avec le résultat souhaité éventuellement)

Si cela fonctionne sur le fichier fourni et pas sur le vrai fichier c'est qu'il n'est en rien représentatif ou que tu n'as pas su transposer ce qui devrait être un simple copier coller du code.
la seule différence avec le vrai fichier c'est que les colonnes "si domaine xx sur quel sujet ?" sont une quinzaine et non 3
merci de votre aide
 

Phil69970

XLDnaute Barbatruc
@serras

Pose toi la question pourquoi tu n'as pas/plus de réponses ?

Tout simplement parce que le fichier que tu as fourni n'est pas représentatif :oops:

la seule différence avec le vrai fichier c'est que les colonnes "si domaine xx sur quel sujet ?" sont une quinzaine et non 3
La seule différence c'est que cela ne fonctionnera qu'avec le fichier fourni mais pas avec ton vrai fichier !!!

C'est pour cela que l'on demande un fichier représentatif !!
Relire mon post #3

Bonne lecture
 

serras

XLDnaute Occasionnel
Rebonjour à tous

Je vous communique en PJ un fichier qui correspond à la demande exactement. En Feuil2 les données brutes, en Feuil1 la manière dont je souhaiterais qu'elles puissent être présentées. L'objectif est de concentrer les blocs couleurs ( dans les données brutes : pour les "si domaine X xsur quel sujet" il ne peut y avoir qu'une cellule remplie ou aucune / pour les "si autre domaine lequel" il ne peut que y avoir une ou aucune mais jamais 2)

Tout cela part d'un questionnaire en ligne construit d'une manière pas adaptée à l'exploitation des données.

Merci pour votre aide et désolé de ne pas avoir été clair dans ma première demande
 

Pièces jointes

  • fichier test v2 - Copie.xlsx
    17.9 KB · Affichages: 6

serras

XLDnaute Occasionnel
Désolé de ne pas avoir été assez précis dans ma deuxième demande. Je l'ai formulée parce que la macro proposée par Sylvanu fonctionne parfaitement mais sur un fichier qui n'a pas le format du vrai

Je retiendrai la leçon : le vrai fichier dès le début tu proposeras. Du travail inutile aux XLDnautes tu éviteras.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Effectivement ça n'a rien à voir.
Un essai en PJ avec :
VB:
Sub Worksheet_Activate()
On Error GoTo Fin
Application.ScreenUpdating = False
Cells.Clear                                             ' effacement Feuil1
With Sheets("Feuil2")
    DL = .[A10000].End(xlUp).Row                        ' Dernière ligne
    DC = .Cells(3, Columns.Count).End(xlToLeft).Column  ' Dernière colonne
    .[A1].CurrentRegion.Copy
    Range("A1").Select: ActiveSheet.Paste: [A1].Select  ' On duplique la zone utile de Feuil2 vers Feuil1
End With
Dim Tablo(1 To 4)
Tablo(1) = Application.Match("Quel est votre 1er domaine de compétence ?", [3:3], 0)    ' Contient colonne Compétences 1
Tablo(2) = Application.Match("Quel est votre 2ème domaine de compétence ?", [3:3], 0)   ' 2
Tablo(3) = Application.Match("Quel est votre 3ème domaine de compétence ?", [3:3], 0)   ' 3
Tablo(4) = Application.Match("Souhaitez-vous indiquer un domaine d'activité ou de compétence supplémentaire, voire le cas échéant, des fonctions antérieures et/ou transverses ", [3:3], 0) ' Contient colonne de Fin
For N = 1 To 3
    For L = 4 To DL
        For i = Tablo(N) + 1 To Tablo(N + 1) - 2 ' -2 car les colonnes utiles sont 2 colonnes avant le titre suivant
            If Cells(L, i) <> "" Then
                Cells(L, Tablo(N) + 1) = Cells(L, i)
                Exit For
            End If
        Next i
    Next L
Next N
For N = 3 To 1 Step -1 ' On supprime les colonnes
    Range(Cells(1, Tablo(N) + 2), Cells(1, Tablo(N + 1) - 2)).EntireColumn.Delete ' +2 colonne aprés titre à -2 colonnes avant titre suivant
Next N
Application.Goto Reference:=[A1], scroll:=True
Fin:
End Sub
En espérant peut être une réponse ça marche/ça marche pas.
 

Pièces jointes

  • fichier test v3.xlsm
    26.8 KB · Affichages: 3

serras

XLDnaute Occasionnel
(re) bonjour

Le principe fonctionne à l’exception d'un point : dans le feuil1 qui synthétise, la colonne "Si autre (sous-domaine x), merci de préciser ?" n'est pas reprise (chaque bloc couleur a en principe 4 colonnes, dans le fichier test v3 il n'y en a que 3)

Merci de votre aide
 

Discussions similaires

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh