Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5) de
mémoriser cette ligne puis la prochaine cellule commençant également par
RSG( exemple A11) pour ensuite trier la plage de cellule entre ces 2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5) de
mémoriser cette ligne puis la prochaine cellule commençant également par
RSG( exemple A11) pour ensuite trier la plage de cellule entre ces 2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5) de
mémoriser cette ligne puis la prochaine cellule commençant également par
RSG( exemple A11) pour ensuite trier la plage de cellule entre ces 2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonjour,
Ceci peut-être
'-------------------
Sub JJ()
col = 1 ' pour la colonne A (a définir)
Dim x As String, y As String, compte As Integer
For Each c In Range("a11:a" & [a36536].End(3).Row)
If UCase(Left(c, 3)) = "RSG" Then
compte = compte + 1
If compte = 2 Then
y = c.Row - 1
Range(Cells(x, col), Cells(y, col)).Sort Key1:=Columns("A"),
Order1:=xlAscending
compte = 0: x = "": y = ""
End If
x = c.Row + 1
End If
Next
End Sub
'------------------
--
Salutations
JJ
"elli6258" a écrit dans le message de news:Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5) de
mémoriser cette ligne puis la prochaine cellule commençant également par
RSG( exemple A11) pour ensuite trier la plage de cellule entre ces 2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonjour,
Ceci peut-être
'-------------------
Sub JJ()
col = 1 ' pour la colonne A (a définir)
Dim x As String, y As String, compte As Integer
For Each c In Range("a11:a" & [a36536].End(3).Row)
If UCase(Left(c, 3)) = "RSG" Then
compte = compte + 1
If compte = 2 Then
y = c.Row - 1
Range(Cells(x, col), Cells(y, col)).Sort Key1:=Columns("A"),
Order1:=xlAscending
compte = 0: x = "": y = ""
End If
x = c.Row + 1
End If
Next
End Sub
'------------------
--
Salutations
JJ
"elli6258" <minier.michel@neuf.fr> a écrit dans le message de news:
uQE07zcBJHA.1632@TK2MSFTNGP06.phx.gbl...
Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5) de
mémoriser cette ligne puis la prochaine cellule commençant également par
RSG( exemple A11) pour ensuite trier la plage de cellule entre ces 2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonjour,
Ceci peut-être
'-------------------
Sub JJ()
col = 1 ' pour la colonne A (a définir)
Dim x As String, y As String, compte As Integer
For Each c In Range("a11:a" & [a36536].End(3).Row)
If UCase(Left(c, 3)) = "RSG" Then
compte = compte + 1
If compte = 2 Then
y = c.Row - 1
Range(Cells(x, col), Cells(y, col)).Sort Key1:=Columns("A"),
Order1:=xlAscending
compte = 0: x = "": y = ""
End If
x = c.Row + 1
End If
Next
End Sub
'------------------
--
Salutations
JJ
"elli6258" a écrit dans le message de news:Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5) de
mémoriser cette ligne puis la prochaine cellule commençant également par
RSG( exemple A11) pour ensuite trier la plage de cellule entre ces 2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5) de
mémoriser cette ligne puis la prochaine cellule commençant également par
RSG( exemple A11) pour ensuite trier la plage de cellule entre ces 2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5) de
mémoriser cette ligne puis la prochaine cellule commençant également par
RSG( exemple A11) pour ensuite trier la plage de cellule entre ces 2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5) de
mémoriser cette ligne puis la prochaine cellule commençant également par
RSG( exemple A11) pour ensuite trier la plage de cellule entre ces 2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" a écrit dans le message de news:Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5) de
mémoriser cette ligne puis la prochaine cellule commençant également par
RSG( exemple A11) pour ensuite trier la plage de cellule entre ces 2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" <minier.michel@neuf.fr> a écrit dans le message de news:
uQE07zcBJHA.1632@TK2MSFTNGP06.phx.gbl...
Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5) de
mémoriser cette ligne puis la prochaine cellule commençant également par
RSG( exemple A11) pour ensuite trier la plage de cellule entre ces 2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" a écrit dans le message de news:Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5) de
mémoriser cette ligne puis la prochaine cellule commençant également par
RSG( exemple A11) pour ensuite trier la plage de cellule entre ces 2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonsoir,
Je viens de prendre connaissance de vos macros, et je suis scotché ! je me
doutais que ce n'étais pas simple.
A la lecture des macros cela correspond à mes attentes, je vais testé ce
soir et je vous tiens informé. Merci encore
"Hervé" a écrit dans le message de news:Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" a écrit dans le message de news:Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5)
de mémoriser cette ligne puis la prochaine cellule commençant également
par RSG( exemple A11) pour ensuite trier la plage de cellule entre ces 2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonsoir,
Je viens de prendre connaissance de vos macros, et je suis scotché ! je me
doutais que ce n'étais pas simple.
A la lecture des macros cela correspond à mes attentes, je vais testé ce
soir et je vous tiens informé. Merci encore
"Hervé" <hmsilve-sanspub@wanadoo.fr> a écrit dans le message de news:
ecJkT9eBJHA.2060@TK2MSFTNGP05.phx.gbl...
Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" <minier.michel@neuf.fr> a écrit dans le message de news:
uQE07zcBJHA.1632@TK2MSFTNGP06.phx.gbl...
Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5)
de mémoriser cette ligne puis la prochaine cellule commençant également
par RSG( exemple A11) pour ensuite trier la plage de cellule entre ces 2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonsoir,
Je viens de prendre connaissance de vos macros, et je suis scotché ! je me
doutais que ce n'étais pas simple.
A la lecture des macros cela correspond à mes attentes, je vais testé ce
soir et je vous tiens informé. Merci encore
"Hervé" a écrit dans le message de news:Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" a écrit dans le message de news:Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5)
de mémoriser cette ligne puis la prochaine cellule commençant également
par RSG( exemple A11) pour ensuite trier la plage de cellule entre ces 2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Re bonsoir, je viens de tester les 2 macros,
Cela fonctionne mais il y a un problème, dans la macro de jacky,
certaines
cellules ne sont pas reconnues, j'ai fait un copier coller de celles qui
l'étaient, mais sans changement.
Dans la macro de Hervé, tout se passe bien, mais quand la commande
"plage.sort " est traité, c'est tout le document qui est trié.
Je me suis mal exprimé dans le descriptif de ce que je veux faire, et je
me suis focaliser sur la colonne A à trier, mais mon tableau comporte une
dizaine de colonne et il faut étendre le trie à toutes les colonnes.
Cordialement
"elli6258" a écrit dans le message de news:
u8LYQ$Bonsoir,
Je viens de prendre connaissance de vos macros, et je suis scotché ! je
me
doutais que ce n'étais pas simple.
A la lecture des macros cela correspond à mes attentes, je vais testé ce
soir et je vous tiens informé. Merci encore
"Hervé" a écrit dans le message de news:Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" a écrit dans le message de news:Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5)
de mémoriser cette ligne puis la prochaine cellule commençant également
par RSG( exemple A11) pour ensuite trier la plage de cellule entre ces
2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Re bonsoir, je viens de tester les 2 macros,
Cela fonctionne mais il y a un problème, dans la macro de jacky,
certaines
cellules ne sont pas reconnues, j'ai fait un copier coller de celles qui
l'étaient, mais sans changement.
Dans la macro de Hervé, tout se passe bien, mais quand la commande
"plage.sort " est traité, c'est tout le document qui est trié.
Je me suis mal exprimé dans le descriptif de ce que je veux faire, et je
me suis focaliser sur la colonne A à trier, mais mon tableau comporte une
dizaine de colonne et il faut étendre le trie à toutes les colonnes.
Cordialement
"elli6258" <minier.michel@neuf.fr> a écrit dans le message de news:
u8LYQ$gBJHA.3484@TK2MSFTNGP04.phx.gbl...
Bonsoir,
Je viens de prendre connaissance de vos macros, et je suis scotché ! je
me
doutais que ce n'étais pas simple.
A la lecture des macros cela correspond à mes attentes, je vais testé ce
soir et je vous tiens informé. Merci encore
"Hervé" <hmsilve-sanspub@wanadoo.fr> a écrit dans le message de news:
ecJkT9eBJHA.2060@TK2MSFTNGP05.phx.gbl...
Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" <minier.michel@neuf.fr> a écrit dans le message de news:
uQE07zcBJHA.1632@TK2MSFTNGP06.phx.gbl...
Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5)
de mémoriser cette ligne puis la prochaine cellule commençant également
par RSG( exemple A11) pour ensuite trier la plage de cellule entre ces
2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Re bonsoir, je viens de tester les 2 macros,
Cela fonctionne mais il y a un problème, dans la macro de jacky,
certaines
cellules ne sont pas reconnues, j'ai fait un copier coller de celles qui
l'étaient, mais sans changement.
Dans la macro de Hervé, tout se passe bien, mais quand la commande
"plage.sort " est traité, c'est tout le document qui est trié.
Je me suis mal exprimé dans le descriptif de ce que je veux faire, et je
me suis focaliser sur la colonne A à trier, mais mon tableau comporte une
dizaine de colonne et il faut étendre le trie à toutes les colonnes.
Cordialement
"elli6258" a écrit dans le message de news:
u8LYQ$Bonsoir,
Je viens de prendre connaissance de vos macros, et je suis scotché ! je
me
doutais que ce n'étais pas simple.
A la lecture des macros cela correspond à mes attentes, je vais testé ce
soir et je vous tiens informé. Merci encore
"Hervé" a écrit dans le message de news:Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" a écrit dans le message de news:Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5)
de mémoriser cette ligne puis la prochaine cellule commençant également
par RSG( exemple A11) pour ensuite trier la plage de cellule entre ces
2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Re...
Et ceci:
http://cjoint.com/?izkGp3pXKz
Sinon une copie du fichier sur:
http://www.cjoint.com
--
Salutations
JJ
"elli6258" a écrit dans le message de news:Re bonsoir, je viens de tester les 2 macros,
Cela fonctionne mais il y a un problème, dans la macro de jacky,
certaines
cellules ne sont pas reconnues, j'ai fait un copier coller de celles qui
l'étaient, mais sans changement.
Dans la macro de Hervé, tout se passe bien, mais quand la commande
"plage.sort " est traité, c'est tout le document qui est trié.
Je me suis mal exprimé dans le descriptif de ce que je veux faire, et je
me suis focaliser sur la colonne A à trier, mais mon tableau comporte une
dizaine de colonne et il faut étendre le trie à toutes les colonnes.
Cordialement
"elli6258" a écrit dans le message de news:
u8LYQ$Bonsoir,
Je viens de prendre connaissance de vos macros, et je suis scotché ! je
me
doutais que ce n'étais pas simple.
A la lecture des macros cela correspond à mes attentes, je vais testé ce
soir et je vous tiens informé. Merci encore
"Hervé" a écrit dans le message de news:Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" a écrit dans le message de news:Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5)
de mémoriser cette ligne puis la prochaine cellule commençant
également
par RSG( exemple A11) pour ensuite trier la plage de cellule entre ces
2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Re...
Et ceci:
http://cjoint.com/?izkGp3pXKz
Sinon une copie du fichier sur:
http://www.cjoint.com
--
Salutations
JJ
"elli6258" <minier.michel@neuf.fr> a écrit dans le message de news:
eqWiGInBJHA.4884@TK2MSFTNGP02.phx.gbl...
Re bonsoir, je viens de tester les 2 macros,
Cela fonctionne mais il y a un problème, dans la macro de jacky,
certaines
cellules ne sont pas reconnues, j'ai fait un copier coller de celles qui
l'étaient, mais sans changement.
Dans la macro de Hervé, tout se passe bien, mais quand la commande
"plage.sort " est traité, c'est tout le document qui est trié.
Je me suis mal exprimé dans le descriptif de ce que je veux faire, et je
me suis focaliser sur la colonne A à trier, mais mon tableau comporte une
dizaine de colonne et il faut étendre le trie à toutes les colonnes.
Cordialement
"elli6258" <minier.michel@neuf.fr> a écrit dans le message de news:
u8LYQ$gBJHA.3484@TK2MSFTNGP04.phx.gbl...
Bonsoir,
Je viens de prendre connaissance de vos macros, et je suis scotché ! je
me
doutais que ce n'étais pas simple.
A la lecture des macros cela correspond à mes attentes, je vais testé ce
soir et je vous tiens informé. Merci encore
"Hervé" <hmsilve-sanspub@wanadoo.fr> a écrit dans le message de news:
ecJkT9eBJHA.2060@TK2MSFTNGP05.phx.gbl...
Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" <minier.michel@neuf.fr> a écrit dans le message de news:
uQE07zcBJHA.1632@TK2MSFTNGP06.phx.gbl...
Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5)
de mémoriser cette ligne puis la prochaine cellule commençant
également
par RSG( exemple A11) pour ensuite trier la plage de cellule entre ces
2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Re...
Et ceci:
http://cjoint.com/?izkGp3pXKz
Sinon une copie du fichier sur:
http://www.cjoint.com
--
Salutations
JJ
"elli6258" a écrit dans le message de news:Re bonsoir, je viens de tester les 2 macros,
Cela fonctionne mais il y a un problème, dans la macro de jacky,
certaines
cellules ne sont pas reconnues, j'ai fait un copier coller de celles qui
l'étaient, mais sans changement.
Dans la macro de Hervé, tout se passe bien, mais quand la commande
"plage.sort " est traité, c'est tout le document qui est trié.
Je me suis mal exprimé dans le descriptif de ce que je veux faire, et je
me suis focaliser sur la colonne A à trier, mais mon tableau comporte une
dizaine de colonne et il faut étendre le trie à toutes les colonnes.
Cordialement
"elli6258" a écrit dans le message de news:
u8LYQ$Bonsoir,
Je viens de prendre connaissance de vos macros, et je suis scotché ! je
me
doutais que ce n'étais pas simple.
A la lecture des macros cela correspond à mes attentes, je vais testé ce
soir et je vous tiens informé. Merci encore
"Hervé" a écrit dans le message de news:Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" a écrit dans le message de news:Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple: A5)
de mémoriser cette ligne puis la prochaine cellule commençant
également
par RSG( exemple A11) pour ensuite trier la plage de cellule entre ces
2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonjour,
J'ai mis une copie du fichier
:http://cjoint.com/?iznhoJpbPW
Merci
Michel
"Jacky" a écrit dans le message de news:
%Re...
Et ceci:
http://cjoint.com/?izkGp3pXKz
Sinon une copie du fichier sur:
http://www.cjoint.com
--
Salutations
JJ
"elli6258" a écrit dans le message de news:Re bonsoir, je viens de tester les 2 macros,
Cela fonctionne mais il y a un problème, dans la macro de jacky,
certaines
cellules ne sont pas reconnues, j'ai fait un copier coller de celles qui
l'étaient, mais sans changement.
Dans la macro de Hervé, tout se passe bien, mais quand la commande
"plage.sort " est traité, c'est tout le document qui est trié.
Je me suis mal exprimé dans le descriptif de ce que je veux faire, et je
me suis focaliser sur la colonne A à trier, mais mon tableau comporte
une
dizaine de colonne et il faut étendre le trie à toutes les colonnes.
Cordialement
"elli6258" a écrit dans le message de news:
u8LYQ$Bonsoir,
Je viens de prendre connaissance de vos macros, et je suis scotché ! je
me
doutais que ce n'étais pas simple.
A la lecture des macros cela correspond à mes attentes, je vais testé
ce
soir et je vous tiens informé. Merci encore
"Hervé" a écrit dans le message de news:Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0),
_
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" a écrit dans le message de news:Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple:
A5)
de mémoriser cette ligne puis la prochaine cellule commençant
également
par RSG( exemple A11) pour ensuite trier la plage de cellule entre
ces
2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonjour,
J'ai mis une copie du fichier
:http://cjoint.com/?iznhoJpbPW
Merci
Michel
"Jacky" <Dupond@marcel.fr> a écrit dans le message de news:
%23c6j71oBJHA.4104@TK2MSFTNGP02.phx.gbl...
Re...
Et ceci:
http://cjoint.com/?izkGp3pXKz
Sinon une copie du fichier sur:
http://www.cjoint.com
--
Salutations
JJ
"elli6258" <minier.michel@neuf.fr> a écrit dans le message de news:
eqWiGInBJHA.4884@TK2MSFTNGP02.phx.gbl...
Re bonsoir, je viens de tester les 2 macros,
Cela fonctionne mais il y a un problème, dans la macro de jacky,
certaines
cellules ne sont pas reconnues, j'ai fait un copier coller de celles qui
l'étaient, mais sans changement.
Dans la macro de Hervé, tout se passe bien, mais quand la commande
"plage.sort " est traité, c'est tout le document qui est trié.
Je me suis mal exprimé dans le descriptif de ce que je veux faire, et je
me suis focaliser sur la colonne A à trier, mais mon tableau comporte
une
dizaine de colonne et il faut étendre le trie à toutes les colonnes.
Cordialement
"elli6258" <minier.michel@neuf.fr> a écrit dans le message de news:
u8LYQ$gBJHA.3484@TK2MSFTNGP04.phx.gbl...
Bonsoir,
Je viens de prendre connaissance de vos macros, et je suis scotché ! je
me
doutais que ce n'étais pas simple.
A la lecture des macros cela correspond à mes attentes, je vais testé
ce
soir et je vous tiens informé. Merci encore
"Hervé" <hmsilve-sanspub@wanadoo.fr> a écrit dans le message de news:
ecJkT9eBJHA.2060@TK2MSFTNGP05.phx.gbl...
Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0),
_
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" <minier.michel@neuf.fr> a écrit dans le message de news:
uQE07zcBJHA.1632@TK2MSFTNGP06.phx.gbl...
Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple:
A5)
de mémoriser cette ligne puis la prochaine cellule commençant
également
par RSG( exemple A11) pour ensuite trier la plage de cellule entre
ces
2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonjour,
J'ai mis une copie du fichier
:http://cjoint.com/?iznhoJpbPW
Merci
Michel
"Jacky" a écrit dans le message de news:
%Re...
Et ceci:
http://cjoint.com/?izkGp3pXKz
Sinon une copie du fichier sur:
http://www.cjoint.com
--
Salutations
JJ
"elli6258" a écrit dans le message de news:Re bonsoir, je viens de tester les 2 macros,
Cela fonctionne mais il y a un problème, dans la macro de jacky,
certaines
cellules ne sont pas reconnues, j'ai fait un copier coller de celles qui
l'étaient, mais sans changement.
Dans la macro de Hervé, tout se passe bien, mais quand la commande
"plage.sort " est traité, c'est tout le document qui est trié.
Je me suis mal exprimé dans le descriptif de ce que je veux faire, et je
me suis focaliser sur la colonne A à trier, mais mon tableau comporte
une
dizaine de colonne et il faut étendre le trie à toutes les colonnes.
Cordialement
"elli6258" a écrit dans le message de news:
u8LYQ$Bonsoir,
Je viens de prendre connaissance de vos macros, et je suis scotché ! je
me
doutais que ce n'étais pas simple.
A la lecture des macros cela correspond à mes attentes, je vais testé
ce
soir et je vous tiens informé. Merci encore
"Hervé" a écrit dans le message de news:Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0),
_
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" a écrit dans le message de news:Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple:
A5)
de mémoriser cette ligne puis la prochaine cellule commençant
également
par RSG( exemple A11) pour ensuite trier la plage de cellule entre
ces
2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonjour,
J'ai mis une copie du fichier
:http://cjoint.com/?iznhoJpbPW
Merci
Michel
"Jacky" a écrit dans le message de news:
%Re...
Et ceci:
http://cjoint.com/?izkGp3pXKz
Sinon une copie du fichier sur:
http://www.cjoint.com
--
Salutations
JJ
"elli6258" a écrit dans le message de news:Re bonsoir, je viens de tester les 2 macros,
Cela fonctionne mais il y a un problème, dans la macro de jacky,
certaines
cellules ne sont pas reconnues, j'ai fait un copier coller de celles qui
l'étaient, mais sans changement.
Dans la macro de Hervé, tout se passe bien, mais quand la commande
"plage.sort " est traité, c'est tout le document qui est trié.
Je me suis mal exprimé dans le descriptif de ce que je veux faire, et je
me suis focaliser sur la colonne A à trier, mais mon tableau comporte
une
dizaine de colonne et il faut étendre le trie à toutes les colonnes.
Cordialement
"elli6258" a écrit dans le message de news:
u8LYQ$Bonsoir,
Je viens de prendre connaissance de vos macros, et je suis scotché ! je
me
doutais que ce n'étais pas simple.
A la lecture des macros cela correspond à mes attentes, je vais testé
ce
soir et je vous tiens informé. Merci encore
"Hervé" a écrit dans le message de news:Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0),
_
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" a écrit dans le message de news:Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple:
A5)
de mémoriser cette ligne puis la prochaine cellule commençant
également
par RSG( exemple A11) pour ensuite trier la plage de cellule entre
ces
2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonjour,
J'ai mis une copie du fichier
:http://cjoint.com/?iznhoJpbPW
Merci
Michel
"Jacky" <Dupond@marcel.fr> a écrit dans le message de news:
%23c6j71oBJHA.4104@TK2MSFTNGP02.phx.gbl...
Re...
Et ceci:
http://cjoint.com/?izkGp3pXKz
Sinon une copie du fichier sur:
http://www.cjoint.com
--
Salutations
JJ
"elli6258" <minier.michel@neuf.fr> a écrit dans le message de news:
eqWiGInBJHA.4884@TK2MSFTNGP02.phx.gbl...
Re bonsoir, je viens de tester les 2 macros,
Cela fonctionne mais il y a un problème, dans la macro de jacky,
certaines
cellules ne sont pas reconnues, j'ai fait un copier coller de celles qui
l'étaient, mais sans changement.
Dans la macro de Hervé, tout se passe bien, mais quand la commande
"plage.sort " est traité, c'est tout le document qui est trié.
Je me suis mal exprimé dans le descriptif de ce que je veux faire, et je
me suis focaliser sur la colonne A à trier, mais mon tableau comporte
une
dizaine de colonne et il faut étendre le trie à toutes les colonnes.
Cordialement
"elli6258" <minier.michel@neuf.fr> a écrit dans le message de news:
u8LYQ$gBJHA.3484@TK2MSFTNGP04.phx.gbl...
Bonsoir,
Je viens de prendre connaissance de vos macros, et je suis scotché ! je
me
doutais que ce n'étais pas simple.
A la lecture des macros cela correspond à mes attentes, je vais testé
ce
soir et je vous tiens informé. Merci encore
"Hervé" <hmsilve-sanspub@wanadoo.fr> a écrit dans le message de news:
ecJkT9eBJHA.2060@TK2MSFTNGP05.phx.gbl...
Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0),
_
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" <minier.michel@neuf.fr> a écrit dans le message de news:
uQE07zcBJHA.1632@TK2MSFTNGP06.phx.gbl...
Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple:
A5)
de mémoriser cette ligne puis la prochaine cellule commençant
également
par RSG( exemple A11) pour ensuite trier la plage de cellule entre
ces
2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Bonjour,
J'ai mis une copie du fichier
:http://cjoint.com/?iznhoJpbPW
Merci
Michel
"Jacky" a écrit dans le message de news:
%Re...
Et ceci:
http://cjoint.com/?izkGp3pXKz
Sinon une copie du fichier sur:
http://www.cjoint.com
--
Salutations
JJ
"elli6258" a écrit dans le message de news:Re bonsoir, je viens de tester les 2 macros,
Cela fonctionne mais il y a un problème, dans la macro de jacky,
certaines
cellules ne sont pas reconnues, j'ai fait un copier coller de celles qui
l'étaient, mais sans changement.
Dans la macro de Hervé, tout se passe bien, mais quand la commande
"plage.sort " est traité, c'est tout le document qui est trié.
Je me suis mal exprimé dans le descriptif de ce que je veux faire, et je
me suis focaliser sur la colonne A à trier, mais mon tableau comporte
une
dizaine de colonne et il faut étendre le trie à toutes les colonnes.
Cordialement
"elli6258" a écrit dans le message de news:
u8LYQ$Bonsoir,
Je viens de prendre connaissance de vos macros, et je suis scotché ! je
me
doutais que ce n'étais pas simple.
A la lecture des macros cela correspond à mes attentes, je vais testé
ce
soir et je vous tiens informé. Merci encore
"Hervé" a écrit dans le message de news:Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0),
_
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" a écrit dans le message de news:Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne de
trouver une cellule contenant un mot commençant par RSG, (exemple:
A5)
de mémoriser cette ligne puis la prochaine cellule commençant
également
par RSG( exemple A11) pour ensuite trier la plage de cellule entre
ces
2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Re...
Si j'ai bien compris
'---------
Sub jj()
Application.ScreenUpdating = False
Dim x As Integer, y As Integer, compte As Integer
For Each c In Range("a1:a" & [A65536].End(3).Row)
If UCase(Left(c, 3)) = "RSG" Then
compte = compte + 1
x = y + 2
y = c.Row - 1
If compte = 2 Then
' MsgBox "Tri de ligne " & x & " à ligne " & y
Rows(x & ":" & y).Sort Key1:=Columns("A"), Order1:=xlAscending
compte = 1
End If
End If
Next
End Sub
'--------------
Ton fichier modifié
http://cjoint.com/?izrDDfGS6a
--
Salutations
JJ
"elli6258" a écrit dans le message de news:Bonjour,
J'ai mis une copie du fichier
:http://cjoint.com/?iznhoJpbPW
Merci
Michel
"Jacky" a écrit dans le message de news:
%Re...
Et ceci:
http://cjoint.com/?izkGp3pXKz
Sinon une copie du fichier sur:
http://www.cjoint.com
--
Salutations
JJ
"elli6258" a écrit dans le message de news:Re bonsoir, je viens de tester les 2 macros,
Cela fonctionne mais il y a un problème, dans la macro de jacky,
certaines
cellules ne sont pas reconnues, j'ai fait un copier coller de celles
qui
l'étaient, mais sans changement.
Dans la macro de Hervé, tout se passe bien, mais quand la commande
"plage.sort " est traité, c'est tout le document qui est trié.
Je me suis mal exprimé dans le descriptif de ce que je veux faire, et
je
me suis focaliser sur la colonne A à trier, mais mon tableau comporte
une
dizaine de colonne et il faut étendre le trie à toutes les colonnes.
Cordialement
"elli6258" a écrit dans le message de news:
u8LYQ$Bonsoir,
Je viens de prendre connaissance de vos macros, et je suis scotché !
je
me
doutais que ce n'étais pas simple.
A la lecture des macros cela correspond à mes attentes, je vais testé
ce
soir et je vous tiens informé. Merci encore
"Hervé" a écrit dans le message de news:Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0),
_
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" a écrit dans le message de news:Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne
de
trouver une cellule contenant un mot commençant par RSG, (exemple:
A5)
de mémoriser cette ligne puis la prochaine cellule commençant
également
par RSG( exemple A11) pour ensuite trier la plage de cellule entre
ces
2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi
de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Re...
Si j'ai bien compris
'---------
Sub jj()
Application.ScreenUpdating = False
Dim x As Integer, y As Integer, compte As Integer
For Each c In Range("a1:a" & [A65536].End(3).Row)
If UCase(Left(c, 3)) = "RSG" Then
compte = compte + 1
x = y + 2
y = c.Row - 1
If compte = 2 Then
' MsgBox "Tri de ligne " & x & " à ligne " & y
Rows(x & ":" & y).Sort Key1:=Columns("A"), Order1:=xlAscending
compte = 1
End If
End If
Next
End Sub
'--------------
Ton fichier modifié
http://cjoint.com/?izrDDfGS6a
--
Salutations
JJ
"elli6258" <minier.michel@neuf.fr> a écrit dans le message de news:
uFOLcLqBJHA.4728@TK2MSFTNGP04.phx.gbl...
Bonjour,
J'ai mis une copie du fichier
:http://cjoint.com/?iznhoJpbPW
Merci
Michel
"Jacky" <Dupond@marcel.fr> a écrit dans le message de news:
%23c6j71oBJHA.4104@TK2MSFTNGP02.phx.gbl...
Re...
Et ceci:
http://cjoint.com/?izkGp3pXKz
Sinon une copie du fichier sur:
http://www.cjoint.com
--
Salutations
JJ
"elli6258" <minier.michel@neuf.fr> a écrit dans le message de news:
eqWiGInBJHA.4884@TK2MSFTNGP02.phx.gbl...
Re bonsoir, je viens de tester les 2 macros,
Cela fonctionne mais il y a un problème, dans la macro de jacky,
certaines
cellules ne sont pas reconnues, j'ai fait un copier coller de celles
qui
l'étaient, mais sans changement.
Dans la macro de Hervé, tout se passe bien, mais quand la commande
"plage.sort " est traité, c'est tout le document qui est trié.
Je me suis mal exprimé dans le descriptif de ce que je veux faire, et
je
me suis focaliser sur la colonne A à trier, mais mon tableau comporte
une
dizaine de colonne et il faut étendre le trie à toutes les colonnes.
Cordialement
"elli6258" <minier.michel@neuf.fr> a écrit dans le message de news:
u8LYQ$gBJHA.3484@TK2MSFTNGP04.phx.gbl...
Bonsoir,
Je viens de prendre connaissance de vos macros, et je suis scotché !
je
me
doutais que ce n'étais pas simple.
A la lecture des macros cela correspond à mes attentes, je vais testé
ce
soir et je vous tiens informé. Merci encore
"Hervé" <hmsilve-sanspub@wanadoo.fr> a écrit dans le message de news:
ecJkT9eBJHA.2060@TK2MSFTNGP05.phx.gbl...
Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0),
_
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" <minier.michel@neuf.fr> a écrit dans le message de news:
uQE07zcBJHA.1632@TK2MSFTNGP06.phx.gbl...
Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne
de
trouver une cellule contenant un mot commençant par RSG, (exemple:
A5)
de mémoriser cette ligne puis la prochaine cellule commençant
également
par RSG( exemple A11) pour ensuite trier la plage de cellule entre
ces
2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi
de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel
Re...
Si j'ai bien compris
'---------
Sub jj()
Application.ScreenUpdating = False
Dim x As Integer, y As Integer, compte As Integer
For Each c In Range("a1:a" & [A65536].End(3).Row)
If UCase(Left(c, 3)) = "RSG" Then
compte = compte + 1
x = y + 2
y = c.Row - 1
If compte = 2 Then
' MsgBox "Tri de ligne " & x & " à ligne " & y
Rows(x & ":" & y).Sort Key1:=Columns("A"), Order1:=xlAscending
compte = 1
End If
End If
Next
End Sub
'--------------
Ton fichier modifié
http://cjoint.com/?izrDDfGS6a
--
Salutations
JJ
"elli6258" a écrit dans le message de news:Bonjour,
J'ai mis une copie du fichier
:http://cjoint.com/?iznhoJpbPW
Merci
Michel
"Jacky" a écrit dans le message de news:
%Re...
Et ceci:
http://cjoint.com/?izkGp3pXKz
Sinon une copie du fichier sur:
http://www.cjoint.com
--
Salutations
JJ
"elli6258" a écrit dans le message de news:Re bonsoir, je viens de tester les 2 macros,
Cela fonctionne mais il y a un problème, dans la macro de jacky,
certaines
cellules ne sont pas reconnues, j'ai fait un copier coller de celles
qui
l'étaient, mais sans changement.
Dans la macro de Hervé, tout se passe bien, mais quand la commande
"plage.sort " est traité, c'est tout le document qui est trié.
Je me suis mal exprimé dans le descriptif de ce que je veux faire, et
je
me suis focaliser sur la colonne A à trier, mais mon tableau comporte
une
dizaine de colonne et il faut étendre le trie à toutes les colonnes.
Cordialement
"elli6258" a écrit dans le message de news:
u8LYQ$Bonsoir,
Je viens de prendre connaissance de vos macros, et je suis scotché !
je
me
doutais que ce n'étais pas simple.
A la lecture des macros cela correspond à mes attentes, je vais testé
ce
soir et je vous tiens informé. Merci encore
"Hervé" a écrit dans le message de news:Bonjour à toutes et tous,
Une autre méthode, à adapter.
Sub Trier()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim TblAdresse() As String
Dim Adresse As String
Dim I As Integer
Set Fe = ActiveSheet
With Fe
'défini la plage de recherche
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
'effectue la recherche dans la plage
Set Cel = Plage.Find("RSG*", , xlValues)
'si trouvé, mémorise l'adresse de la 1ère
'cellule afin de ne pas tourner en boucle
If Not Cel Is Nothing Then
Adresse = Cel.Address
'stocke dans un tableau l'adresse de
'chaque cellule où le mot est trouvé
Do
I = I + 1
ReDim Preserve TblAdresse(1 To I)
TblAdresse(I) = Cel.Address(0, 0)
Set Cel = Plage.FindNext(Cel)
Loop While Adresse <> Cel.Address
'tri croissant des plages entre cellules
For I = 1 To UBound(TblAdresse)
'gère l'erreur de fin de tableau pour trier
'les dernières cellules après la dernière
'contenant le mot recherché
On Error Resume Next
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0), _
.Range(TblAdresse(I + 1)).Offset(-1, 0))
If Err.Number <> 0 Then
Set Plage = .Range(.Range(TblAdresse(I)).Offset(1, 0),
_
.Range(.[A65536].End(xlUp).Address))
End If
Plage.Sort [A1]
Next
Else
MsgBox "Mot non trouvé !"
End If
End With
Hervé.
End Sub
"elli6258" a écrit dans le message de news:Bonjour à tous,
je cherche une macro en vba excel qui me permet , dans une colonne
de
trouver une cellule contenant un mot commençant par RSG, (exemple:
A5)
de mémoriser cette ligne puis la prochaine cellule commençant
également
par RSG( exemple A11) pour ensuite trier la plage de cellule entre
ces
2
cellules ( A6:A10), recommencer la recherche depuis (A11) et ainsi
de
suite jusqu' a la fin du tableau.
En fait je veux trier en ordre croissant toutes les cellules qui se
trouvent entres 2 cellules contenant le mot RSG.
Merci de votre contribution
Michel