Tri avec tableau excel

Résolu
gilet38 -  
 anocheda -
Bonjour à vous tous, j'espère que vous aller bien. Voici mon problème, j'ai ds un tableau comportant 47 colonnes et au max 10 lignes, dans ce tableau certaines cellules on des valeurs et d'autre non. J'aimerais savoir s'il existe une fonction dans excel qui permet de retourner les valeurs d'un tableau sur une ligne en ne conservant que les cellules contenant une valeurs. J'ai regardé les fct de bases de données et recherche avec excel mais je ne vois pas comment elle peuvent rgler ce problème.
Merci
Configuration: Windows XP
Internet Explorer 6.0

9 réponses

  1. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     
    Désolé ! J'aurais bien aimé t'aider, mais je n'ai pas compris ce que tu cherches à faire.
    Pourrais-tu mettre des exemples ?
    --
    C'est bien, la retraite ! Surtout aux Antilles ... :-)
    Raymond
    0
    1. gilet38
       
      BOnjour voici mes explications supplémentaires, J'ai un tableau de 50 colonnes et de 10 lignes. À l'intérieur de ce tableaux, il y a un certain nombre de valeurs (# aléatoires compris entre 5 et 45) dispercé à l'intérieur de tableau. Je me demande s'il est possible de réécrire ces valeurs sur une seul lignes en partant de la première ligne du tableaux et en parcourant l'ensemble du tableau. Je ne cherche pas à éliminer les lignes et les colonnes, simplement retourner l'ensemble des valeurs sur une nouvelle ligne.
      MErci énormément
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    Pas trop compris ta demande...

    pour l'instant: s'agit il de supprimer les lignes qui comporte une cellule vide dans tes 47 colonnes ?

    ou...?

    Dans l'attente

    Michel
    0
    1. gilet38
       
      Merci a vs pour votre rapidité, je pourrais ajouter mon document sur un post cependant étant novice sur le forum je ne sait pas comment faire, ma problématique serait ainsi plus facile à comprendre.
      0
      1. chtilou Messages postés 1704 Statut Membre 523 > gilet38
         
        regarde ici
        0
  3. gilet38
     
    Dans un tableau (en piece jointe) de 20 colonnes et 10 lignes, il y a un certain nombre de cellules comportant une valeur. J'aimerais savoir comment faire pour retourner les valeurs des cellules sur une meme lignes. Autrement dit ds l'exemple ci-joint obtenir sur une meme ligne
    A1;A2;147;159;163;196.....826;877;A10;949
    MErci à l'Avance du temps que vous me consacrerai à la résolution de mes interogations et je m'excuse je suis a ma premiere utilisation de tel forums

    http://www.cijoint.fr/cjlink.php?file=cj200805/cij0NazuGo.xls
    0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    Je n'ai pas regardé le forum pendant que j'écrivais une solution

    Ici la zone est C6 à R36 et je reporte en ligne 40 dans l'ordre croissant (je vais mettre les adaptations à faire en gras.

    La macro est copier coller dans l'éditeur VBA (tu dis si tu ne sais pas comment faire)

    Sub aligner()
    Dim plage As Range
    Dim coll As Collection
    Dim lig As Long
    Dim cptr As Byte, nbre As Byte
    Dim alpha(), i As Byte, j As Byte, tmp As Byte

    Set plage = Range("C6:R36") ' a adapter
    Set coll = New Collection
    lig = 40 ' ligne de restitution à adapter

    'recherche les valeurs en éliminant les doublons
    For Each cellule In plage
    On Error Resume Next
    coll.Add cellule.Value, CStr(cellule.Value)
    On Error GoTo 0
    Next
    nbre = coll.Count

    'restitue la plage épurée des doublons dans une variable tableau
    ReDim alpha(nbre)
    cptr = 1
    While cptr <= nbre
    alpha(cptr) = coll(cptr)
    cptr = cptr + 1
    Wend

    'Tri croissant
    For i = 1 To nbre
    j = i
    For k = j + 1 To nbre
    If alpha(k) <= alpha(j) Then j = k
    Next k
    If i <> j Then
    tmp = alpha(j)
    alpha(j) = alpha(i)
    alpha(i) = tmp
    End If
    Next i
    'restitution des valeurs en ordre croissant
    Application.ScreenUpdating = False
    Rows(lig).ClearContents
    cptr = 1
    While cptr <= nbre
    Cells(lig, cptr) = alpha(cptr)
    cptr = cptr + 1
    Wend
    End Sub
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Re,
      bonjourau passage à Raymond, Tchilou

      Tu m'avais pas dit des valeurs entre 5 et 45 ?... sur ton exemple c'est toujours à 3 chiffres: il a donc fallu que je change le type de variable !...

      donc, voici ton tableau PAC (Pret A Cuire)
      https://www.cjoint.com/?fmrwz6fEyy

      Bonne soirée
      Michel
      0
      1. gilet38 > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Un gros merci michel, pour ce qui es du nombre 5 à 45 cela représentait le # de valeurs en moyenne dans le tableau. Le tout marche très bien, cependant je vais tenter de le modifier, car les valeurs de la première colonne A1 A2 et ainsi de suite doivent aussi être trier. J'essaie de faire la modification de mon côté et si j'ai d'autre problème je vais réécrire à nouveau. Bonne soirée à vous, pour ma part, c'est bonne aprés-midi, je suis au Québec.
        0
      2. chtilou Messages postés 1704 Statut Membre 523 > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Bonsoir Michel,
        bien joué.
        N'étant pas un pro des macros (ça rime ;-) ), j'ai sauvegardé ce fichier qui me servira sans doute un jour.

        Cordialement.
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Salut Tchilou

    La procédure dite du tri à bulles vient du site de Frédéric Sigonneau. Ca me permet ainsi de citer les sources ce que je n'avais malencontreusement pas fait dans cette démo.

    Si te lances dans les macros , ce site est à mettre dans tes favoris (ou marque-pages). Ca se lit pas comme un roman policier, faut cogiter mais...

    http://frederic.sigonneau.free.fr/

    Amicalement,
    Michel

    PS à Gilet38: les valeurs dans la colonne A sont du texte sur ton exemple et ca ne marche pas dans la proc que je t'ai proposé

    il est 18:12 H en France, bon appétit pour les gens du Québec!
    0
    1. chtilou Messages postés 1704 Statut Membre 523
       
      Vraiment excellent ce lien.
      Merci beaucoup Michel.
      Comme qui dirait:"Y'a plus qu'a"
      0
    2. anocheda
       
      Salut michel,

      Je t'ecris a propos de ton tri de matrice excell sur une ligne dans un ordre croissant.
      C'est exactement ce que je cherchais pour mon probleme et je t en remerci
      cependant ca marche pas chez moi...quand je prend le classeur en piece jointe, en activant les macros et que j appui sur le bouton trier, il se passe rien
      est ce que tu as la solution ?
      de plus si je colle ta macro sur mon propre tableau il me met une erreue sur la premiere ligne

      merci d'avance,

      Antoine
      0
      1. anocheda > anocheda
         
        re salut
        esxcuse moi en fait c'est juste le bouton qui marche pas
        merci pour tout elle va trop me servir cette macro

        Anotine
        0
    3. anocheda
       
      Salut michel,

      Je t'ecris a propos de ton tri de matrice excell sur une ligne dans un ordre croissant.
      C'est exactement ce que je cherchais pour mon probleme et je t en remerci
      cependant ca marche pas chez moi...quand je prend le classeur en piece jointe, en activant les macros et que j appui sur le bouton trier, il se passe rien
      est ce que tu as la solution ?
      de plus si je colle ta macro sur mon propre tableau il me met une erreue sur la premiere ligne

      merci d'avance,

      Antoine
      0
    4. anocheda
       
      Bonjour Michel,

      C'est encore moi...
      bon en fait ca marche pas pour les chiffre a virgule genre 3,5 il affiche que un entier... j'imagine que c'est juste un probleme de variable mais j y connait rien a visual basic est ce que tu pourais me donner le nouveau code pour que ca marche

      si j ai comme valeurs 0.5 1 1.5 2 2.5 il me renvoi 0 1 2 2 2
      merci

      Antoine
      0
  7. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     
    Salut, gilet38.
    Voici un début : https://www.cjoint.com/?fnbnckQRiL
    50 colonnes x 10 lignes = 500 cases de A1 à AX10 contenant des nombres entiers de 5 à 45
    1) En A11 saisir =SI(A1>0;TEXTE(A1;"00");"").
    2) En B11 saisir =A11&SI(B1>0;TEXTE(B1;"00");"")
    3) Recopier B11 jusqu'à AX12
    4) Recopier la ligne 11 jusqu'à la ligne 20
    5) En A21 saisir le résultat final =AX11&AX12&AX13&AX14&AX15&AX16&AX17&AX18&AX19&AX20
    Est-ce que c'est à peu près ce que tu voulais ?
    0
  8. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     
    Encore moi.

    Version définitive, garantie sans VBA : https://www.cjoint.com/?fncoGcOQey

    50 colonnes x 10 lignes = 500 cases de A1 à AX10
    1) En A11 saisir =SI(A1>0;A1&";";"")
    2) En B11 saisir =A11&SI(B1>0;B1&";";"")
    3) Recopier B11 jusqu'à AX12
    4) Recopier la ligne 11 jusqu'à la ligne 20
    5) En A21 saisir le résultat final =AX11&AX12&AX13&AX14&AX15&AX16&AX17&AX18&AX19&AX20
    6) Si on veut absolument enlever le point-virgule final, utiliser en A23 la formule : =GAUCHE(A21;NBCAR(A21)-1)
    Fonctionne sans macro, quels que soient les contenus des cellules !
    0
  9. gilet38
     
    Un gros merci à michel_m et à Raymond Pentier et à tous les autres pour l'aide et le temps que vous m'avez accordé. Le tout fonctionne à merveille.
    0
  10. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     
    Eh bien tant mieux, et bonsoir au Québec (qui est sensiblement à l'heure des Antilles).
    Au lieu de rester utilisateur anonyme, tu devrais t'inscrire comme membre ; c'est gratuit et ça te procure quelques facilités, comme d'indiquer que ta discussion est résolue, de consulter l'historique de tes interventions, et surtout de disposer d'une boîte aux lettres personnelle, qui te permettra d'échanger avec d'autres membres des messages privés.
    Ainsi, tu pourrais me faire admirer le résultat de ton travail, sans devoir l'exposer aux regards de tous les CCMistes.
    0