Tri avec tableau excel
Résolu/Fermé
A voir également:
- Tri avec tableau excel
- Tableau croisé dynamique - Guide
- Trier tableau excel - Guide
- Liste déroulante excel - Guide
- Tableau ascii - Guide
- Tableau word - Guide
9 réponses
Raymond PENTIER
Messages postés
58731
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
23 novembre 2024
17 243
12 mai 2008 à 16:24
12 mai 2008 à 16:24
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
Pourrais-tu mettre des exemples ?
--
C'est bien, la retraite ! Surtout aux Antilles ... :-)
Raymond
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
12 mai 2008 à 16:26
12 mai 2008 à 16:26
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
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
chtilou
Messages postés
1696
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
30 avril 2012
523
>
gilet38
12 mai 2008 à 16:58
12 mai 2008 à 16:58
regarde ici
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
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
12 mai 2008 à 17:12
12 mai 2008 à 17:12
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
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
12 mai 2008 à 17:27
12 mai 2008 à 17:27
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
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
gilet38
>
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
12 mai 2008 à 17:42
12 mai 2008 à 17:42
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.
chtilou
Messages postés
1696
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
30 avril 2012
523
>
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
12 mai 2008 à 17:46
12 mai 2008 à 17:46
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.
bien joué.
N'étant pas un pro des macros (ça rime ;-) ), j'ai sauvegardé ce fichier qui me servira sans doute un jour.
Cordialement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
12 mai 2008 à 18:16
12 mai 2008 à 18:16
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!
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!
chtilou
Messages postés
1696
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
30 avril 2012
523
12 mai 2008 à 20:56
12 mai 2008 à 20:56
Vraiment excellent ce lien.
Merci beaucoup Michel.
Comme qui dirait:"Y'a plus qu'a"
Merci beaucoup Michel.
Comme qui dirait:"Y'a plus qu'a"
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
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
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
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
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
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
Raymond PENTIER
Messages postés
58731
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
23 novembre 2024
17 243
13 mai 2008 à 01:21
13 mai 2008 à 01:21
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 ?
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 ?
Raymond PENTIER
Messages postés
58731
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
23 novembre 2024
17 243
13 mai 2008 à 02:19
13 mai 2008 à 02:19
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 !
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 !
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.
Raymond PENTIER
Messages postés
58731
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
23 novembre 2024
17 243
13 mai 2008 à 02:56
13 mai 2008 à 02:56
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.
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.
12 mai 2008 à 16:30
MErci énormément