XL 2016 Extraire les données d'une colonne pour les metrre dans une autre colonne

Fred S.

XLDnaute Nouveau
Bonjour à tous, et merci de m'accueillir sur ce forum.

Je suis débutant sous excel et je cherche depuis plusieurs jours à résoudre mon promblème.
J'ai une feuille dans laquelle j'ai des noms dans une colonne et il peut y avoir des blancs entre les noms dans cette colonne. Je voudrais remettre tous ces noms dans une autre colonne d'une autre feuille avec les noms l'un en dessous de l'autre mais sans les blancs. comment faire ?

Merci pour vos réponses

Fréd
 
Solution
Bonjour Fred S.,

Voyez le fichier .xlsm joint et cette fonction VBA :
VB:
Function MonTri(plage As Range, ordre As Long)
Dim c As Range, a(), n&
For Each c In plage
    If c <> "" Then
        ReDim Preserve a(n) 'base 0
        a(n) = c
        n = n + 1
    End If
Next
If n = 0 Then MonTri = "": Exit Function
tri a, 0, n - 1
If ordre <= n Then MonTri = a(ordre - 1) Else MonTri = ""
End Function

Sub tri(a, gauc, droi) ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While a(g) < ref: g = g + 1: Loop
    Do While ref < a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call...

xUpsilon

XLDnaute Accro
Bonjour,

Via un tableau croisé dynamique ?
1695368344661.png
=>
1695368361699.png


Bonne journée,
 

Fred S.

XLDnaute Nouveau
Merci pour vos réponses.

Job75, j'ai pas été aussi précis que je le pensais :) Les noms changent en fonction d'une autre feuille de calcul.
je vais tester le tableau dynamique
xUpsilon, ca ne fonctionne pas comme je le souhaiterai. Les noms doivent apparaitre dans une colonne préformaté.
 
Dernière édition:

Fred S.

XLDnaute Nouveau
Voici le fichier.

Dans feuil2, j'ai des intitulés dans la colonne A et dans les colonnes B et C des noms. Il y a donc des vides entre les noms.
Je souhaiterais que dans la feuille FG - Spés sous les emplacements vide de IMP2 et RAD 2 apparaissent les noms sans les vides et dans les bonnes colonnes.
Exemple :
Feuille 1 : Sous imp2 : AAA - - - - - BBB - - - CCC
Sous rad2 : - - DDD - - - - - RRRR - - - - JJJJ
Feuille 2 : Sous imp2 apparait donc AAA - BBB - CCC
Sous RAD2 apparait donc DDD RRRR JJJJ


En éspérant avoir été assez claire

Merci d'avance :)
 

Pièces jointes

  • Essais.xlsx
    19 KB · Affichages: 5

xUpsilon

XLDnaute Accro
Bonjour,

Voir ci-joint avec l'exemple pour IMP2.
Une fois de plus, mettre un fichier joint apporte une aide bien plus adaptée et efficace. Comme quoi, lire la charte, ça sert à quelque chose ...

Bonne journée,
 

Pièces jointes

  • Essais.xlsx
    19.6 KB · Affichages: 4

Fred S.

XLDnaute Nouveau
Désolé, mais effectivement xUpsilon, quand je refais la même chose sur RAD2 j'ai une erreur. Je selectionne bien toutes les cellules et j'entre la formule et fini par CTRL+MAJ+ENTREE.
Pareil, lorsque je change un nom ou si 'jen rajoute un, ca me met une erreur.

Du coup je ne sais pas ce que je fais de mal...

Essai.jpg
 
Dernière édition:

job75

XLDnaute Barbatruc
Bon allez, formule matricielle en F11 :
Code:
=SIERREUR(INDEX(Feuil2!B:B;PETITE.VALEUR(SI((Feuil2!B$2:B$13<>"")*NON(NB.SI(F$10:F10;Feuil2!B$2:B$13));LIGNE(Feuil2!B$2:B$13));1));"")
à valider par Ctrl+Maj+Entrée et tirer sur F11:F20.
 

Pièces jointes

  • Essais.xlsx
    19.3 KB · Affichages: 7

Fred S.

XLDnaute Nouveau
Je vais être chiant encore une fois, mais y a t-il un moyen pour que dans la feuille FG - Spés, les noms soient rangés par ordre alphabétique ? La fonction trier ne fonctionne pas je pense a cause de l'ordre dans la feuille 2.

D'avance merci :)
 

job75

XLDnaute Barbatruc
Bonjour Fred S.,

Voyez le fichier .xlsm joint et cette fonction VBA :
VB:
Function MonTri(plage As Range, ordre As Long)
Dim c As Range, a(), n&
For Each c In plage
    If c <> "" Then
        ReDim Preserve a(n) 'base 0
        a(n) = c
        n = n + 1
    End If
Next
If n = 0 Then MonTri = "": Exit Function
tri a, 0, n - 1
If ordre <= n Then MonTri = a(ordre - 1) Else MonTri = ""
End Function

Sub tri(a, gauc, droi) ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While a(g) < ref: g = g + 1: Loop
    Do While ref < a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub
Le code doit être placé impérativement dans un module standard.

A+
 

Pièces jointes

  • Essais VBA.xlsm
    26.8 KB · Affichages: 1

job75

XLDnaute Barbatruc
Cela dit on peut continuer avec les formules matricielles, en F11 :
Code:
=SIERREUR(INDEX(Feuil2!B$2:B$13;EQUIV(GRANDE.VALEUR(SI(Feuil2!B$2:B$13<>"";NB.SI(Feuil2!B$2:B$13;">"&Feuil2!B$2:B$13));LIGNE(F1));SI(Feuil2!B$2:B$13<>"";NB.SI(Feuil2!B$2:B$13;">"&Feuil2!B$2:B$13));0));"")
Edit : au post #9 les doublons sont éliminés, ce n'est pas le cas ici.
 

Pièces jointes

  • Essais(1).xlsx
    19.3 KB · Affichages: 0
Dernière édition:

Discussions similaires

Réponses
9
Affichages
137

Statistiques des forums

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