Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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...

job75

XLDnaute Barbatruc
Bonjour Fred S., xUpsilon,

Si les noms sont des constantes en colonne A :

- sélectionner toute la colonne A

- touche F5 => Cellules => Constantes => OK

- clic droit sur la sélection => Copier

- sélectionner B1 => clic droit => Coller.

A+
 

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: 6

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...

 
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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…