Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Select phrase après un mot

31 réponses
Avatar
vyvan
Bonjour à tous,
Je fais la recherche d'un mot ds une plage de cells. Je trouve le mot
mais j'aimerais copier le mot avec le restant de la phrase... comment
faire.
Help !!!
Merci

10 réponses

1 2 3 4
Avatar
FxM
Même le dimanche en période de fêtes ... y m'énerve ;o))))



Boff ...
que m'apercois-je donque à la relecture ?
Ses données seraient en A1:Cx ?
Bon ...laissons réagir

AV



Voui, en A1:C2000 pour être précis.
pff comme dirait ...

@+
FxM qui aperçoit sur Paris un ciel rouge de chez rouge, c'est génial.


Avatar
FxM
Après les cahuètes et 1/2 cahuètes, les petits et gros bisoux, les
poutoux dans l'oreille, voici les turluttes [Non, chers ami(e)s
Canadiens, ce n'est pas la même chose que par chez vous :o) ]

Yvan, t'es gentil tout plein mais euh ... (comment dire?) faut pas
t'égarer :o)

@+
FxM



CA MARCHE DU TONNERRE DE ZEUS !!!!
Merci à tous
Super, super forum et forumers !!
Tiens si j'étais une nana, vous mériteriez une pi... mais je m'égare... :o)
!!!
Encore MErci
yvan
A bientot pour une nouvelle excelente aventure
----------------

"FxM" a écrit dans le message de news:
#

Voici le résultat des courses.

Dans le classeur en question :
Alt-F11 | insertion | module

Sub test()
'feuille
feu_arr = "feuil1"
'cellules d'entrée
plage_cel = "A1:C2000"
'textes à chercher
arr_texte = Array("loi", "réglement", "décret")

'avec la feuille
With Sheets(feu_arr)
'parcourir toutes les cellules
For Each cel In .Range(plage_cel)
'si elle n'est pas vide
If Not IsEmpty(cel) Then
'quel est le contenu
celT = cel.Text
'parcourir la liste des textes à chercher
For a = 0 To UBound(arr_texte)
'pos = 0 = texte absent, sinon position du texte
pos = InStr(1, UCase(celT), UCase(arr_texte(a)))
If pos > 0 Then
'dernière ligne
lig = .Cells(65536, 5 + a).End(xlUp).Row
'particularité pour la 1ère ligne
If .Cells(lig, 5 + a) = "" Then lig = 0
'extraire et placer
.Cells(lig + 1, 5 + a) = Mid(celT, pos, Len(celT))
Exit For
End If
Next a
End If
Next cel
End With
End Sub



Voici la macro dont je me suis servi pour remplir des fausses données :

Sub rnd4()
Randomize
feu_arr = "feuil1"
plage_cel = "A1:C2000"
arr_texte = Array("loi", "réglement", "décret")

With Sheets(feu_arr)
For Each cel In Range(plage_cel)
alea = 3 * Rnd()
st1 = "toto toto "
st2 = " du 12 de cne kahd zuh "
On Error Resume Next
txt = Mid(st1, Rnd() * Len(st1), Rnd() * Len(st1)) &
arr_texte(Int(alea)) & Mid(st2, Rnd() * Len(st2), Rnd() * Len(st2))
On Error GoTo 0
cel.Value = txt
Next cel
End With
End Sub

Le tout testé sous XL2K/Win98SE.

@+
FxM









Excuses...


Clarifions la situation :



Où sont tes données d'entrée :
- y a-t-il UN fichier ou PLUSIEURS fichiers ? UN FICHIER
-> son nom est ... FichierNimporte.xls
- y a-t-il UNE feuille ou PLUSIEURS feuilles ? UNE FEUILLE
-> son nom est ...Feuil1
- y a-t-il UNE zone ou PLUSIEURS zones : UNE PLAGE (par ex. A1:C2000)
-> leur(s) adresse(s) est(sont) ...

Où voudrais-tu les données en sortie :
nom de feuille : .... LA MEME (Feuil1)
Colonne E : tout ce qui démarre par "Loi" : OUI
Colonne F : tout ce qui démarre par "Réglement" : OUI
Colonne G : tout ce qui démarre par "Décret" : OUI
S'il y en a d'autre, c'est le moment ou jamais de le dire !
-> A partir de quelle ligne doit-on écrire (titre en ligne 1?) LIGNE 1


(pas de titre)
yvan












Avatar
sabatier
ben, pourquoi, françois-xavier, ce "euh...faut pas t'égarer"?
si tu étais venu à marseille, tu aurais toi aussi profité de celle que nous
a faite la charmante femme de Laurent D, bien aidée en cela par l'épouse de
Luc, le pote à Laurent...
attends, je pose la question aux connaisseurs que sont Pierre, Jièl,
Jean-Pascal (je ne m'adresse pas à Robert qui, c'est lui qui l'a dit, n'aime
pas manger épicé) ; allez, dites-leur à ces esprits tordus qu'elle était
vraiment bonne cette piperade...
jps

"FxM" a écrit dans le message de
news:%
Après les cahuètes et 1/2 cahuètes, les petits et gros bisoux, les
poutoux dans l'oreille, voici les turluttes [Non, chers ami(e)s
Canadiens, ce n'est pas la même chose que par chez vous :o) ]

Yvan, t'es gentil tout plein mais euh ... (comment dire?) faut pas
t'égarer :o)

@+
FxM



CA MARCHE DU TONNERRE DE ZEUS !!!!
Merci à tous
Super, super forum et forumers !!
Tiens si j'étais une nana, vous mériteriez une pi... mais je m'égare...
:o)


!!!
Encore MErci
yvan
A bientot pour une nouvelle excelente aventure
----------------

"FxM" a écrit dans le message de news:
#

Voici le résultat des courses.

Dans le classeur en question :
Alt-F11 | insertion | module

Sub test()
'feuille
feu_arr = "feuil1"
'cellules d'entrée
plage_cel = "A1:C2000"
'textes à chercher
arr_texte = Array("loi", "réglement", "décret")

'avec la feuille
With Sheets(feu_arr)
'parcourir toutes les cellules
For Each cel In .Range(plage_cel)
'si elle n'est pas vide
If Not IsEmpty(cel) Then
'quel est le contenu
celT = cel.Text
'parcourir la liste des textes à chercher
For a = 0 To UBound(arr_texte)
'pos = 0 = texte absent, sinon position du texte
pos = InStr(1, UCase(celT), UCase(arr_texte(a)))
If pos > 0 Then
'dernière ligne
lig = .Cells(65536, 5 + a).End(xlUp).Row
'particularité pour la 1ère ligne
If .Cells(lig, 5 + a) = "" Then lig = 0
'extraire et placer
.Cells(lig + 1, 5 + a) = Mid(celT, pos, Len(celT))
Exit For
End If
Next a
End If
Next cel
End With
End Sub



Voici la macro dont je me suis servi pour remplir des fausses données :

Sub rnd4()
Randomize
feu_arr = "feuil1"
plage_cel = "A1:C2000"
arr_texte = Array("loi", "réglement", "décret")

With Sheets(feu_arr)
For Each cel In Range(plage_cel)
alea = 3 * Rnd()
st1 = "toto toto "
st2 = " du 12 de cne kahd zuh "
On Error Resume Next
txt = Mid(st1, Rnd() * Len(st1), Rnd() * Len(st1)) &
arr_texte(Int(alea)) & Mid(st2, Rnd() * Len(st2), Rnd() * Len(st2))
On Error GoTo 0
cel.Value = txt
Next cel
End With
End Sub

Le tout testé sous XL2K/Win98SE.

@+
FxM









Excuses...


Clarifions la situation :



Où sont tes données d'entrée :
- y a-t-il UN fichier ou PLUSIEURS fichiers ? UN FICHIER
-> son nom est ... FichierNimporte.xls
- y a-t-il UNE feuille ou PLUSIEURS feuilles ? UNE FEUILLE
-> son nom est ...Feuil1
- y a-t-il UNE zone ou PLUSIEURS zones : UNE PLAGE (par ex. A1:C2000)
-> leur(s) adresse(s) est(sont) ...

Où voudrais-tu les données en sortie :
nom de feuille : .... LA MEME (Feuil1)
Colonne E : tout ce qui démarre par "Loi" : OUI
Colonne F : tout ce qui démarre par "Réglement" : OUI
Colonne G : tout ce qui démarre par "Décret" : OUI
S'il y en a d'autre, c'est le moment ou jamais de le dire !
-> A partir de quelle ligne doit-on écrire (titre en ligne 1?) LIGNE 1


(pas de titre)
yvan














Avatar
Yvan
C'est encore moi... décidemment tu vas me trouver chi...
J'ai des doublons dans les colonnes E, F, G et il faudrait les trier...
oui je sais j'y connais rien.
Merci
Yvan

"FxM" a écrit dans le message de news:
#
Voici le résultat des courses.

Dans le classeur en question :
Alt-F11 | insertion | module

Sub test()
'feuille
feu_arr = "feuil1"
'cellules d'entrée
plage_cel = "A1:C2000"
'textes à chercher
arr_texte = Array("loi", "réglement", "décret")

'avec la feuille
With Sheets(feu_arr)
'parcourir toutes les cellules
For Each cel In .Range(plage_cel)
'si elle n'est pas vide
If Not IsEmpty(cel) Then
'quel est le contenu
celT = cel.Text
'parcourir la liste des textes à chercher
For a = 0 To UBound(arr_texte)
'pos = 0 = texte absent, sinon position du texte
pos = InStr(1, UCase(celT), UCase(arr_texte(a)))
If pos > 0 Then
'dernière ligne
lig = .Cells(65536, 5 + a).End(xlUp).Row
'particularité pour la 1ère ligne
If .Cells(lig, 5 + a) = "" Then lig = 0
'extraire et placer
.Cells(lig + 1, 5 + a) = Mid(celT, pos, Len(celT))
Exit For
End If
Next a
End If
Next cel
End With
End Sub



Voici la macro dont je me suis servi pour remplir des fausses données :

Sub rnd4()
Randomize
feu_arr = "feuil1"
plage_cel = "A1:C2000"
arr_texte = Array("loi", "réglement", "décret")

With Sheets(feu_arr)
For Each cel In Range(plage_cel)
alea = 3 * Rnd()
st1 = "toto toto "
st2 = " du 12 de cne kahd zuh "
On Error Resume Next
txt = Mid(st1, Rnd() * Len(st1), Rnd() * Len(st1)) &
arr_texte(Int(alea)) & Mid(st2, Rnd() * Len(st2), Rnd() * Len(st2))
On Error GoTo 0
cel.Value = txt
Next cel
End With
End Sub

Le tout testé sous XL2K/Win98SE.

@+
FxM








Excuses...

Clarifions la situation :



Où sont tes données d'entrée :
- y a-t-il UN fichier ou PLUSIEURS fichiers ? UN FICHIER
-> son nom est ... FichierNimporte.xls
- y a-t-il UNE feuille ou PLUSIEURS feuilles ? UNE FEUILLE
-> son nom est ...Feuil1
- y a-t-il UNE zone ou PLUSIEURS zones : UNE PLAGE (par ex. A1:C2000)
-> leur(s) adresse(s) est(sont) ...

Où voudrais-tu les données en sortie :
nom de feuille : .... LA MEME (Feuil1)
Colonne E : tout ce qui démarre par "Loi" : OUI
Colonne F : tout ce qui démarre par "Réglement" : OUI
Colonne G : tout ce qui démarre par "Décret" : OUI
S'il y en a d'autre, c'est le moment ou jamais de le dire !
-> A partir de quelle ligne doit-on écrire (titre en ligne 1?) LIGNE 1


(pas de titre)
yvan







Avatar
...Patrick
FX salut !!
tu es de Paris toi ???
peux tu m'ecrire un mot en privé, mon adresse est ci dessous (à propos du 11
decembre)
Merci


--
...Patrick
Quoi que vous fassiez, faites le bien .
Mail: http://cerbermail.com/?KPW0tTCjFw
Connectez vous sur ce forum par :
news://msnews.microsoft.com/microsoft.public.fr.excel


"FxM" a écrit dans le message de news:
%
Voici le résultat des courses.

Dans le classeur en question :
Alt-F11 | insertion | module

Sub test()
'feuille
feu_arr = "feuil1"
'cellules d'entrée
plage_cel = "A1:C2000"
'textes à chercher
arr_texte = Array("loi", "réglement", "décret")

'avec la feuille
With Sheets(feu_arr)
'parcourir toutes les cellules
For Each cel In .Range(plage_cel)
'si elle n'est pas vide
If Not IsEmpty(cel) Then
'quel est le contenu
celT = cel.Text
'parcourir la liste des textes à chercher
For a = 0 To UBound(arr_texte)
'pos = 0 = texte absent, sinon position du texte
pos = InStr(1, UCase(celT), UCase(arr_texte(a)))
If pos > 0 Then
'dernière ligne
lig = .Cells(65536, 5 + a).End(xlUp).Row
'particularité pour la 1ère ligne
If .Cells(lig, 5 + a) = "" Then lig = 0
'extraire et placer
.Cells(lig + 1, 5 + a) = Mid(celT, pos, Len(celT))
Exit For
End If
Next a
End If
Next cel
End With
End Sub



Voici la macro dont je me suis servi pour remplir des fausses données :

Sub rnd4()
Randomize
feu_arr = "feuil1"
plage_cel = "A1:C2000"
arr_texte = Array("loi", "réglement", "décret")

With Sheets(feu_arr)
For Each cel In Range(plage_cel)
alea = 3 * Rnd()
st1 = "toto toto "
st2 = " du 12 de cne kahd zuh "
On Error Resume Next
txt = Mid(st1, Rnd() * Len(st1), Rnd() * Len(st1)) &
arr_texte(Int(alea)) & Mid(st2, Rnd() * Len(st2), Rnd() * Len(st2))
On Error GoTo 0
cel.Value = txt
Next cel
End With
End Sub

Le tout testé sous XL2K/Win98SE.

@+
FxM








Excuses...

Clarifions la situation :



Où sont tes données d'entrée :
- y a-t-il UN fichier ou PLUSIEURS fichiers ? UN FICHIER
-> son nom est ... FichierNimporte.xls
- y a-t-il UNE feuille ou PLUSIEURS feuilles ? UNE FEUILLE
-> son nom est ...Feuil1
- y a-t-il UNE zone ou PLUSIEURS zones : UNE PLAGE (par ex. A1:C2000)
-> leur(s) adresse(s) est(sont) ...

Où voudrais-tu les données en sortie :
nom de feuille : .... LA MEME (Feuil1)
Colonne E : tout ce qui démarre par "Loi" : OUI
Colonne F : tout ce qui démarre par "Réglement" : OUI
Colonne G : tout ce qui démarre par "Décret" : OUI
S'il y en a d'autre, c'est le moment ou jamais de le dire !
-> A partir de quelle ligne doit-on écrire (titre en ligne 1?) LIGNE 1


(pas de titre)
yvan






Avatar
Yvan
Je sais, je sais... je débute
Je décortique le problème lentement. C'est quand m^me compliqué VBA non ?
T'as quelle formation pour sortir du code aussi facilement???
J'espère que tu te fais payer grassement... des compétences comme les
tiennes
ça doit se vendre à prix d'or.
Merci
(Je reviendrais peut-être...:O)))

"FxM" a écrit dans le message de news:

Pourquoi est-ce que je *vais te* trouver ...? Non, je *te trouve* ...
Disons qu'il est 1) temps d'apprendre un peu 2) sypa de ne pas faire des
questions à tiroir (mais à qui l'ai-je déjà écrit ... ?) :o)

En fin de macro, c'est à dire :
Next a
End If
Next cel
---> ICI <---


End With
End Sub



Tu insères le code :

a) si tu ne veux que trier les colonnes :
For col = 5 To 7
.Columns(col).Select
Selection.Sort Key1:=Range(Cells(1, col).Address),
Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom
Next col


b) si tu veux trier et enlever les doublons
For col = 5 To 7
.Columns(col).Select
Selection.Sort Key1:=Range(Cells(1, col).Address),
Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom
For a = .Cells(65536, col).End(xlUp).Row To 2 Step -1
If .Cells(a, col).Value = .Cells(a - 1, col) Then
.Cells(a, col).ClearContents
End If
Next a
.Columns(col).Select
Selection.Sort Key1:=Range(Cells(1, col).Address),
Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom
Next col

Et comme d'hab, tu feras attention aux coupures de ligne. Profites pour
dire à ton patron que les heures du dimanche sontà +50%. J'ai déjà
largement fait les miennes durant la semaine.

@+
FxM





C'est encore moi... décidemment tu vas me trouver chi...
J'ai des doublons dans les colonnes E, F, G et il faudrait les trier...
oui je sais j'y connais rien.
Merci
Yvan

"FxM" a écrit dans le message de news:
#

Voici le résultat des courses.

Dans le classeur en question :
Alt-F11 | insertion | module

Sub test()
'feuille
feu_arr = "feuil1"
'cellules d'entrée
plage_cel = "A1:C2000"
'textes à chercher
arr_texte = Array("loi", "réglement", "décret")

'avec la feuille
With Sheets(feu_arr)
'parcourir toutes les cellules
For Each cel In .Range(plage_cel)
'si elle n'est pas vide
If Not IsEmpty(cel) Then
'quel est le contenu
celT = cel.Text
'parcourir la liste des textes à chercher
For a = 0 To UBound(arr_texte)
'pos = 0 = texte absent, sinon position du texte
pos = InStr(1, UCase(celT), UCase(arr_texte(a)))
If pos > 0 Then
'dernière ligne
lig = .Cells(65536, 5 + a).End(xlUp).Row
'particularité pour la 1ère ligne
If .Cells(lig, 5 + a) = "" Then lig = 0
'extraire et placer
.Cells(lig + 1, 5 + a) = Mid(celT, pos, Len(celT))
Exit For
End If
Next a
End If
Next cel
End With
End Sub



Voici la macro dont je me suis servi pour remplir des fausses données :

Sub rnd4()
Randomize
feu_arr = "feuil1"
plage_cel = "A1:C2000"
arr_texte = Array("loi", "réglement", "décret")

With Sheets(feu_arr)
For Each cel In Range(plage_cel)
alea = 3 * Rnd()
st1 = "toto toto "
st2 = " du 12 de cne kahd zuh "
On Error Resume Next
txt = Mid(st1, Rnd() * Len(st1), Rnd() * Len(st1)) &
arr_texte(Int(alea)) & Mid(st2, Rnd() * Len(st2), Rnd() * Len(st2))
On Error GoTo 0
cel.Value = txt
Next cel
End With
End Sub

Le tout testé sous XL2K/Win98SE.

@+
FxM









Excuses...


Clarifions la situation :



Où sont tes données d'entrée :
- y a-t-il UN fichier ou PLUSIEURS fichiers ? UN FICHIER
-> son nom est ... FichierNimporte.xls
- y a-t-il UNE feuille ou PLUSIEURS feuilles ? UNE FEUILLE
-> son nom est ...Feuil1
- y a-t-il UNE zone ou PLUSIEURS zones : UNE PLAGE (par ex. A1:C2000)
-> leur(s) adresse(s) est(sont) ...

Où voudrais-tu les données en sortie :
nom de feuille : .... LA MEME (Feuil1)
Colonne E : tout ce qui démarre par "Loi" : OUI
Colonne F : tout ce qui démarre par "Réglement" : OUI
Colonne G : tout ce qui démarre par "Décret" : OUI
S'il y en a d'autre, c'est le moment ou jamais de le dire !
-> A partir de quelle ligne doit-on écrire (titre en ligne 1?) LIGNE 1


(pas de titre)
yvan














Avatar
FxM
FX salut !!
tu es de Paris toi ???
peux tu m'ecrire un mot en privé, mon adresse est ci dessous (à propos du 11
decembre)
Merci




tu as du courrier.

@+
FxM

Avatar
FxM
Pourquoi est-ce que je *vais te* trouver ...? Non, je *te trouve* ...
Disons qu'il est 1) temps d'apprendre un peu 2) sypa de ne pas faire des
questions à tiroir (mais à qui l'ai-je déjà écrit ... ?) :o)

En fin de macro, c'est à dire :
Next a
End If
Next cel
---> ICI <---


End With
End Sub



Tu insères le code :

a) si tu ne veux que trier les colonnes :
For col = 5 To 7
.Columns(col).Select
Selection.Sort Key1:=Range(Cells(1, col).Address),
Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom
Next col


b) si tu veux trier et enlever les doublons
For col = 5 To 7
.Columns(col).Select
Selection.Sort Key1:=Range(Cells(1, col).Address),
Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom
For a = .Cells(65536, col).End(xlUp).Row To 2 Step -1
If .Cells(a, col).Value = .Cells(a - 1, col) Then
.Cells(a, col).ClearContents
End If
Next a
.Columns(col).Select
Selection.Sort Key1:=Range(Cells(1, col).Address),
Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom
Next col

Et comme d'hab, tu feras attention aux coupures de ligne. Profites pour
dire à ton patron que les heures du dimanche sontà +50%. J'ai déjà
largement fait les miennes durant la semaine.

@+
FxM





C'est encore moi... décidemment tu vas me trouver chi...
J'ai des doublons dans les colonnes E, F, G et il faudrait les trier...
oui je sais j'y connais rien.
Merci
Yvan

"FxM" a écrit dans le message de news:
#

Voici le résultat des courses.

Dans le classeur en question :
Alt-F11 | insertion | module

Sub test()
'feuille
feu_arr = "feuil1"
'cellules d'entrée
plage_cel = "A1:C2000"
'textes à chercher
arr_texte = Array("loi", "réglement", "décret")

'avec la feuille
With Sheets(feu_arr)
'parcourir toutes les cellules
For Each cel In .Range(plage_cel)
'si elle n'est pas vide
If Not IsEmpty(cel) Then
'quel est le contenu
celT = cel.Text
'parcourir la liste des textes à chercher
For a = 0 To UBound(arr_texte)
'pos = 0 = texte absent, sinon position du texte
pos = InStr(1, UCase(celT), UCase(arr_texte(a)))
If pos > 0 Then
'dernière ligne
lig = .Cells(65536, 5 + a).End(xlUp).Row
'particularité pour la 1ère ligne
If .Cells(lig, 5 + a) = "" Then lig = 0
'extraire et placer
.Cells(lig + 1, 5 + a) = Mid(celT, pos, Len(celT))
Exit For
End If
Next a
End If
Next cel
End With
End Sub



Voici la macro dont je me suis servi pour remplir des fausses données :

Sub rnd4()
Randomize
feu_arr = "feuil1"
plage_cel = "A1:C2000"
arr_texte = Array("loi", "réglement", "décret")

With Sheets(feu_arr)
For Each cel In Range(plage_cel)
alea = 3 * Rnd()
st1 = "toto toto "
st2 = " du 12 de cne kahd zuh "
On Error Resume Next
txt = Mid(st1, Rnd() * Len(st1), Rnd() * Len(st1)) &
arr_texte(Int(alea)) & Mid(st2, Rnd() * Len(st2), Rnd() * Len(st2))
On Error GoTo 0
cel.Value = txt
Next cel
End With
End Sub

Le tout testé sous XL2K/Win98SE.

@+
FxM









Excuses...


Clarifions la situation :



Où sont tes données d'entrée :
- y a-t-il UN fichier ou PLUSIEURS fichiers ? UN FICHIER
-> son nom est ... FichierNimporte.xls
- y a-t-il UNE feuille ou PLUSIEURS feuilles ? UNE FEUILLE
-> son nom est ...Feuil1
- y a-t-il UNE zone ou PLUSIEURS zones : UNE PLAGE (par ex. A1:C2000)
-> leur(s) adresse(s) est(sont) ...

Où voudrais-tu les données en sortie :
nom de feuille : .... LA MEME (Feuil1)
Colonne E : tout ce qui démarre par "Loi" : OUI
Colonne F : tout ce qui démarre par "Réglement" : OUI
Colonne G : tout ce qui démarre par "Décret" : OUI
S'il y en a d'autre, c'est le moment ou jamais de le dire !
-> A partir de quelle ligne doit-on écrire (titre en ligne 1?) LIGNE 1


(pas de titre)
yvan












Avatar
FxM
(Je reviendrais peut-être...:O)))
Pas de nouvelles ... t'es faché ?


@+
FxM



Je sais, je sais... je débute
Je décortique le problème lentement. C'est quand m^me compliqué VBA non ?
T'as quelle formation pour sortir du code aussi facilement???
J'espère que tu te fais payer grassement... des compétences comme les
tiennes
ça doit se vendre à prix d'or.
Merci
(Je reviendrais peut-être...:O)))

"FxM" a écrit dans le message de news:


Pourquoi est-ce que je *vais te* trouver ...? Non, je *te trouve* ...
Disons qu'il est 1) temps d'apprendre un peu 2) sypa de ne pas faire des
questions à tiroir (mais à qui l'ai-je déjà écrit ... ?) :o)

En fin de macro, c'est à dire :
Next a
End If
Next cel
---> ICI <---


End With
End Sub



Tu insères le code :

a) si tu ne veux que trier les colonnes :
For col = 5 To 7
.Columns(col).Select
Selection.Sort Key1:=Range(Cells(1, col).Address),
Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom
Next col


b) si tu veux trier et enlever les doublons
For col = 5 To 7
.Columns(col).Select
Selection.Sort Key1:=Range(Cells(1, col).Address),
Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom
For a = .Cells(65536, col).End(xlUp).Row To 2 Step -1
If .Cells(a, col).Value = .Cells(a - 1, col) Then
.Cells(a, col).ClearContents
End If
Next a
.Columns(col).Select
Selection.Sort Key1:=Range(Cells(1, col).Address),
Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom
Next col

Et comme d'hab, tu feras attention aux coupures de ligne. Profites pour
dire à ton patron que les heures du dimanche sontà +50%. J'ai déjà
largement fait les miennes durant la semaine.

@+
FxM






C'est encore moi... décidemment tu vas me trouver chi...
J'ai des doublons dans les colonnes E, F, G et il faudrait les trier...
oui je sais j'y connais rien.
Merci
Yvan

"FxM" a écrit dans le message de news:
#


Voici le résultat des courses.

Dans le classeur en question :
Alt-F11 | insertion | module

Sub test()
'feuille
feu_arr = "feuil1"
'cellules d'entrée
plage_cel = "A1:C2000"
'textes à chercher
arr_texte = Array("loi", "réglement", "décret")

'avec la feuille
With Sheets(feu_arr)
'parcourir toutes les cellules
For Each cel In .Range(plage_cel)
'si elle n'est pas vide
If Not IsEmpty(cel) Then
'quel est le contenu
celT = cel.Text
'parcourir la liste des textes à chercher
For a = 0 To UBound(arr_texte)
'pos = 0 = texte absent, sinon position du texte
pos = InStr(1, UCase(celT), UCase(arr_texte(a)))
If pos > 0 Then
'dernière ligne
lig = .Cells(65536, 5 + a).End(xlUp).Row
'particularité pour la 1ère ligne
If .Cells(lig, 5 + a) = "" Then lig = 0
'extraire et placer
.Cells(lig + 1, 5 + a) = Mid(celT, pos, Len(celT))
Exit For
End If
Next a
End If
Next cel
End With
End Sub



Voici la macro dont je me suis servi pour remplir des fausses données :

Sub rnd4()
Randomize
feu_arr = "feuil1"
plage_cel = "A1:C2000"
arr_texte = Array("loi", "réglement", "décret")

With Sheets(feu_arr)
For Each cel In Range(plage_cel)
alea = 3 * Rnd()
st1 = "toto toto "
st2 = " du 12 de cne kahd zuh "
On Error Resume Next
txt = Mid(st1, Rnd() * Len(st1), Rnd() * Len(st1)) &
arr_texte(Int(alea)) & Mid(st2, Rnd() * Len(st2), Rnd() * Len(st2))
On Error GoTo 0
cel.Value = txt
Next cel
End With
End Sub

Le tout testé sous XL2K/Win98SE.

@+
FxM










Excuses...



Clarifions la situation :



Où sont tes données d'entrée :
- y a-t-il UN fichier ou PLUSIEURS fichiers ? UN FICHIER
-> son nom est ... FichierNimporte.xls
- y a-t-il UNE feuille ou PLUSIEURS feuilles ? UNE FEUILLE
-> son nom est ...Feuil1
- y a-t-il UNE zone ou PLUSIEURS zones : UNE PLAGE (par ex. A1:C2000)
-> leur(s) adresse(s) est(sont) ...

Où voudrais-tu les données en sortie :
nom de feuille : .... LA MEME (Feuil1)
Colonne E : tout ce qui démarre par "Loi" : OUI
Colonne F : tout ce qui démarre par "Réglement" : OUI
Colonne G : tout ce qui démarre par "Décret" : OUI
S'il y en a d'autre, c'est le moment ou jamais de le dire !
-> A partir de quelle ligne doit-on écrire (titre en ligne 1?) LIGNE 1


(pas de titre)
yvan


















Avatar
Yvan
Oh, non pas faché du tout.
Je faisais mes tests avec ton code. Excellent, rapide, efficace...
Si j'osais te demander encore quelque chose... ??? bon allez...
Tu sais les colonnes E, F, G ou ya les "Loi, Décret..." après recherche,
j'ai réussi à les placer dans une listbox mais lorsque je sélectionne un
élément
j'aimerais qu'il s'affiche directement dans la cellule active après le texte
déjà entré...
@+
Yvan


"FxM" a écrit dans le message de news:

(Je reviendrais peut-être...:O)))
Pas de nouvelles ... t'es faché ?


@+
FxM



Je sais, je sais... je débute
Je décortique le problème lentement. C'est quand m^me compliqué VBA non
?


T'as quelle formation pour sortir du code aussi facilement???
J'espère que tu te fais payer grassement... des compétences comme les
tiennes
ça doit se vendre à prix d'or.
Merci
(Je reviendrais peut-être...:O)))

"FxM" a écrit dans le message de news:


Pourquoi est-ce que je *vais te* trouver ...? Non, je *te trouve* ...
Disons qu'il est 1) temps d'apprendre un peu 2) sypa de ne pas faire des
questions à tiroir (mais à qui l'ai-je déjà écrit ... ?) :o)

En fin de macro, c'est à dire :
Next a
End If
Next cel
---> ICI <---


End With
End Sub



Tu insères le code :

a) si tu ne veux que trier les colonnes :
For col = 5 To 7
.Columns(col).Select
Selection.Sort Key1:=Range(Cells(1, col).Address),
Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom
Next col


b) si tu veux trier et enlever les doublons
For col = 5 To 7
.Columns(col).Select
Selection.Sort Key1:=Range(Cells(1, col).Address),
Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom
For a = .Cells(65536, col).End(xlUp).Row To 2 Step -1
If .Cells(a, col).Value = .Cells(a - 1, col) Then
.Cells(a, col).ClearContents
End If
Next a
.Columns(col).Select
Selection.Sort Key1:=Range(Cells(1, col).Address),
Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom
Next col

Et comme d'hab, tu feras attention aux coupures de ligne. Profites pour
dire à ton patron que les heures du dimanche sontà +50%. J'ai déjà
largement fait les miennes durant la semaine.

@+
FxM






C'est encore moi... décidemment tu vas me trouver chi...
J'ai des doublons dans les colonnes E, F, G et il faudrait les trier...
oui je sais j'y connais rien.
Merci
Yvan

"FxM" a écrit dans le message de news:
#


Voici le résultat des courses.

Dans le classeur en question :
Alt-F11 | insertion | module

Sub test()
'feuille
feu_arr = "feuil1"
'cellules d'entrée
plage_cel = "A1:C2000"
'textes à chercher
arr_texte = Array("loi", "réglement", "décret")

'avec la feuille
With Sheets(feu_arr)
'parcourir toutes les cellules
For Each cel In .Range(plage_cel)
'si elle n'est pas vide
If Not IsEmpty(cel) Then
'quel est le contenu
celT = cel.Text
'parcourir la liste des textes à chercher
For a = 0 To UBound(arr_texte)
'pos = 0 = texte absent, sinon position du texte
pos = InStr(1, UCase(celT), UCase(arr_texte(a)))
If pos > 0 Then
'dernière ligne
lig = .Cells(65536, 5 + a).End(xlUp).Row
'particularité pour la 1ère ligne
If .Cells(lig, 5 + a) = "" Then lig = 0
'extraire et placer
.Cells(lig + 1, 5 + a) = Mid(celT, pos, Len(celT))
Exit For
End If
Next a
End If
Next cel
End With
End Sub



Voici la macro dont je me suis servi pour remplir des fausses données
:






Sub rnd4()
Randomize
feu_arr = "feuil1"
plage_cel = "A1:C2000"
arr_texte = Array("loi", "réglement", "décret")

With Sheets(feu_arr)
For Each cel In Range(plage_cel)
alea = 3 * Rnd()
st1 = "toto toto "
st2 = " du 12 de cne kahd zuh "
On Error Resume Next
txt = Mid(st1, Rnd() * Len(st1), Rnd() * Len(st1)) &
arr_texte(Int(alea)) & Mid(st2, Rnd() * Len(st2), Rnd() * Len(st2))
On Error GoTo 0
cel.Value = txt
Next cel
End With
End Sub

Le tout testé sous XL2K/Win98SE.

@+
FxM










Excuses...



Clarifions la situation :



Où sont tes données d'entrée :
- y a-t-il UN fichier ou PLUSIEURS fichiers ? UN FICHIER
-> son nom est ... FichierNimporte.xls
- y a-t-il UNE feuille ou PLUSIEURS feuilles ? UNE FEUILLE
-> son nom est ...Feuil1
- y a-t-il UNE zone ou PLUSIEURS zones : UNE PLAGE (par ex.
A1:C2000)







-> leur(s) adresse(s) est(sont) ...

Où voudrais-tu les données en sortie :
nom de feuille : .... LA MEME (Feuil1)
Colonne E : tout ce qui démarre par "Loi" : OUI
Colonne F : tout ce qui démarre par "Réglement" : OUI
Colonne G : tout ce qui démarre par "Décret" : OUI
S'il y en a d'autre, c'est le moment ou jamais de le dire !
-> A partir de quelle ligne doit-on écrire (titre en ligne 1?) LIGNE
1








(pas de titre)
yvan




















1 2 3 4