OVH Cloud OVH Cloud

Comparaison method for Range

13 réponses
Avatar
Mathew
Hello,

I would like to make a macro which permit to searches a text chain within
ranges of an excel file.

For ex : If Range (XX) contains "this_word" then....

I can only searche when the text chain is exactly the same.
I would like to be able to do it even if only one word of the range is the
same as my text chain.

Does someone knows how to do this ?

Maybe it's a newbee question, sorry.

Thanks
Mathew

3 réponses

1 2
Avatar
isabelle
bonjour Mathew,

Et je dois copier le nom des users (par ex :Yukiko.Kojima) dans une
autre case.


la formule doit etre mis dans cette autre case.

et Function MotCentre(ByVal..... etc
tu la copie tel quel dans un module de visual basic,
ce n'est pas une Sub mais une Function personnalisé,
qui sera disponnible (une fois copier) au menu,
Isertion, Function, catégorie Personnalisées

isabelle

Isabelle,

Merci pour ton aide.
Mais je ne vois pas comment on utilise la fct
=SUPPRESPACE(MotCentre(A1;" ";":"))
J'ecris ca ou ?
(Et dans le module ou j'ai copie le code, je dois faire une sub () ou bien
?)

Desole, je suis vraiment nul!!!
Matthieu


"isabelle" wrote in message
news:

bonjour Mathew,

copie cette fonction dans un module,

Function MotCentre(ByVal Chaine$, _
Optional SeparateurX$ = " ", Optional SeparateurY$ = " ")
Dim posX, posY, nbcarT, nbcarX, MotIntérieurDélimité_X
nbcarT = Len(Chaine)
nbcarX = Len(SeparateurX)
posX = Application.Search(SeparateurX, Chaine)
posY = Application.Search(SeparateurY, Chaine, posX)
MotIntérieurDélimité_X = Right(Chaine, nbcarT - posX - nbcarX + 1)
On Error GoTo fin
MotCentre = Left(MotIntérieurDélimité_X, posY - posX - nbcarX)
Exit Function
fin:
MotCentre = MotIntérieurDélimité_X
End Function

et en la combinant avec la fonction SUPPRESPACE, tu auras le résultat
attendu.
=SUPPRESPACE(MotCentre(A1;" ";":"))

isabelle


Salut,

merci pour ta reponse hier sur le news group.
Comme tu a l'air de maitriser, j'aimerai te pose une autre question :

Dans mon tableau, j'ai des cases avec:
Hiroyuki.Ohama:(CI) CHANGE
Yukiko.Kojima:(CI) CHANGE
etc...

(Les espaces du debut y sont aussi)

Et je dois copier le nom des users (par ex :Yukiko.Kojima) dans une



autre

case.
Pour automatiser le truc sur tout le fichier je sais le faire, mais je



ne

vois
pas comment reussir a shope le nom des users qui sont tous differents.
On peut peut etre prendre le mot avant le point (.) le mot apres le



point,

mais
je ne sais pas comment faire ca...

T'as pas une idee, ya au moins 15000 lignes je peux pas le faire a la



main!!


Merci,
Matthieu


"Daniel" wrote in message
news:ud#


Bonjour.
Essaie :
Sub test()
Dim c As Range
Range("A1:B3").Select
For Each c In Selection
Var = InStr(1, c.Value, "this_word")
If Var > 0 Then
MsgBox c.Address
End If
Next c
End Sub

" Mathew" a $BqD(Brit dans le message de




news:




Hello,

I would like to make a macro which permit to searches a text chain



within


ranges of an excel file.

For ex : If Range (XX) contains "this_word" then....

I can only searche when the text chain is exactly the same.
I would like to be able to do it even if only one word of the range is



the


same as my text chain.

Does someone knows how to do this ?

Maybe it's a newbee question, sorry.

Thanks
Mathew

















Avatar
Mathew
Bonjour
Merci encore pour ton code.
Maintenant que mes feuilles excel sont propres, j'ai d'autres trucs a faire.

Sur une feuille, j'ai des paquets de donnees (plusieurs lignes) separes par
un ligne blanche.
Je dois prendre chaque paquet de donnees (le nb de lignes est variable) et
le copier dans un nouveau workbook. Ensuite sauver le workbook avec la
valeur de la premiere case du paquet de donnee en question.

Je suis en train d'essayer de le faire en creant, un Array temporaire ou je
copie les valeur de chaque lignes du paquet de donnee, pour ensuite le
coller dans ma nouvelle feuille.
Et je loop ca pour toute la worksheet.
Mais ca ne marche pas encore.

Si tu peux m'aider, c'est vraiment cool.

Merci
Matthieu


"Daniel" wrote in message
news:#
Bonjour.
Tu peux essayer le code suivant :

Sub test()
Dim c As Range, Var As String, Pos As Integer
Range("A1:B3").Select
For Each c In Selection
Var = Trim(c.Value)
Pos = InStr(1, Var, ":")
If Var <> "" Then
If Pos > 0 Then
Var = Left(Var, Pos - 1)
End If
c.Value = Var
End If
Next c
End Sub

Cordialement.
Daniel
" Mathew" a $BqD(Brit dans le message de news:

Salut,

merci pour ta reponse hier sur le news group.
Comme tu a l'air de maitriser, j'aimerai te pose une autre question :

Dans mon tableau, j'ai des cases avec:
Hiroyuki.Ohama:(CI) CHANGE
Yukiko.Kojima:(CI) CHANGE
etc...

(Les espaces du debut y sont aussi)

Et je dois copier le nom des users (par ex :Yukiko.Kojima) dans une
autre


case.
Pour automatiser le truc sur tout le fichier je sais le faire, mais je
ne


vois
pas comment reussir a shope le nom des users qui sont tous differents.
On peut peut etre prendre le mot avant le point (.) le mot apres le
point,


mais
je ne sais pas comment faire ca...

T'as pas une idee, ya au moins 15000 lignes je peux pas le faire a la
main!!


Merci,
Matthieu


"Daniel" wrote in message
news:ud#
Bonjour.
Essaie :
Sub test()
Dim c As Range
Range("A1:B3").Select
For Each c In Selection
Var = InStr(1, c.Value, "this_word")
If Var > 0 Then
MsgBox c.Address
End If
Next c
End Sub

" Mathew" a $BqD(Brit dans le message de
news:

Hello,

I would like to make a macro which permit to searches a text chain
within


ranges of an excel file.

For ex : If Range (XX) contains "this_word" then....

I can only searche when the text chain is exactly the same.
I would like to be able to do it even if only one word of the range
is




the
same as my text chain.

Does someone knows how to do this ?

Maybe it's a newbee question, sorry.

Thanks
Mathew
















Avatar
Daniel
Bonjour.
Le code suivant devrait le faire. Je suis parti du principe que la colonne A
était toujours renseignée (sauf pour les lignes blanches)

Sub Test()
Dim NomFichier As String, CellDebut As Range, Cellfin As Range
Dim NomClasseur As String, LigneFin As Integer
Range("A1").Select
LigneFin = ActiveCell.SpecialCells(xlLastCell).Row
Do While ActiveCell.Row <= LigneFin
Set CellDebut = ActiveCell
Do While ActiveCell <> ""
Set Cellfin = ActiveCell
ActiveCell.Offset(1, 0).Select
Loop
MsgBox Cellfin.Address
Range(CellDebut, Cellfin).EntireRow.Select
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="e:donneesdaniel" &
CellDebut.Value
NomClasseur = ActiveWorkbook.Name
Workbooks("010405.xls").Activate
Selection.Copy Workbooks(NomClasseur).Sheets("Feuil1").Range("A1")
Workbooks(NomClasseur).Save
Workbooks(NomClasseur).Close
Cellfin.Offset(2, 0).Select
Loop
End Sub

A ta disposition pour tout renseignement complémentaire.
Cordialement.
Daniel
" Mathew" a écrit dans le message de news:
%
Bonjour
Merci encore pour ton code.
Maintenant que mes feuilles excel sont propres, j'ai d'autres trucs a
faire.

Sur une feuille, j'ai des paquets de donnees (plusieurs lignes) separes
par
un ligne blanche.
Je dois prendre chaque paquet de donnees (le nb de lignes est variable) et
le copier dans un nouveau workbook. Ensuite sauver le workbook avec la
valeur de la premiere case du paquet de donnee en question.

Je suis en train d'essayer de le faire en creant, un Array temporaire ou
je
copie les valeur de chaque lignes du paquet de donnee, pour ensuite le
coller dans ma nouvelle feuille.
Et je loop ca pour toute la worksheet.
Mais ca ne marche pas encore.

Si tu peux m'aider, c'est vraiment cool.

Merci
Matthieu


"Daniel" wrote in message
news:#
Bonjour.
Tu peux essayer le code suivant :

Sub test()
Dim c As Range, Var As String, Pos As Integer
Range("A1:B3").Select
For Each c In Selection
Var = Trim(c.Value)
Pos = InStr(1, Var, ":")
If Var <> "" Then
If Pos > 0 Then
Var = Left(Var, Pos - 1)
End If
c.Value = Var
End If
Next c
End Sub

Cordialement.
Daniel
" Mathew" a $BqD(Brit dans le message de
news:

Salut,

merci pour ta reponse hier sur le news group.
Comme tu a l'air de maitriser, j'aimerai te pose une autre question :

Dans mon tableau, j'ai des cases avec:
Hiroyuki.Ohama:(CI) CHANGE
Yukiko.Kojima:(CI) CHANGE
etc...

(Les espaces du debut y sont aussi)

Et je dois copier le nom des users (par ex :Yukiko.Kojima) dans une
autre


case.
Pour automatiser le truc sur tout le fichier je sais le faire, mais je
ne


vois
pas comment reussir a shope le nom des users qui sont tous differents.
On peut peut etre prendre le mot avant le point (.) le mot apres le
point,


mais
je ne sais pas comment faire ca...

T'as pas une idee, ya au moins 15000 lignes je peux pas le faire a la
main!!


Merci,
Matthieu


"Daniel" wrote in message
news:ud#
Bonjour.
Essaie :
Sub test()
Dim c As Range
Range("A1:B3").Select
For Each c In Selection
Var = InStr(1, c.Value, "this_word")
If Var > 0 Then
MsgBox c.Address
End If
Next c
End Sub

" Mathew" a $BqD(Brit dans le message
de
news:

Hello,

I would like to make a macro which permit to searches a text chain
within


ranges of an excel file.

For ex : If Range (XX) contains "this_word" then....

I can only searche when the text chain is exactly the same.
I would like to be able to do it even if only one word of the range
is




the
same as my text chain.

Does someone knows how to do this ?

Maybe it's a newbee question, sorry.

Thanks
Mathew




















1 2