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

fonction left() dans une boucle suite

9 réponses
Avatar
Bidou
Bonjour,

Ces lignes de programme fonctionnent avec des valeurs de type string mais
pas numérique et c'est justement ce que je voudrais!

A1:A4 contiennent :

a1 > toto azertyxxxx
a2> tata azertymmmm
a3> titi azertybbbb
a4> tutu azertycccc

B1:B4 contiennent:

B1> toto
b2> xxxx
B3> rrrrrrr
B4> bbbbb


Worksheets("feuil1").Activate

Dim cel1 As Range
Dim cel2 As Range
For Each cel1 In Worksheets("feuil1").Range("a1:a4")
For Each cel2 In Worksheets("feuil1").Range("b1:b4")

If Left(cel1.Value, 4) = cel2.Value Then
MsgBox cel2.Value
End If

Next cel2

Next cel1

end sub

le msgbox va dans ce cas afficher "toto" puisque cette mention figure en B1
mais si je tape un numéro par ex 8000 à la place de " toto" en A1 et en B1
rien ne s'affiche!
Left() ne fonctionnerait-il pas qu'avec des données de type string ?
Y a-t-il une autre possibilité ?

Merci pour votre aide

9 réponses

Avatar
FrankyONE
Bonjour,

Ces lignes de programme fonctionnent avec des valeurs de type string mais
pas numérique et c'est justement ce que je voudrais!

A1:A4 contiennent :

a1 > toto azertyxxxx
a2> tata azertymmmm
a3> titi azertybbbb
a4> tutu azertycccc

B1:B4 contiennent:

B1> toto
b2> xxxx
B3> rrrrrrr
B4> bbbbb


Worksheets("feuil1").Activate

Dim cel1 As Range
Dim cel2 As Range
For Each cel1 In Worksheets("feuil1").Range("a1:a4")
For Each cel2 In Worksheets("feuil1").Range("b1:b4")

If Left(cel1.Value, 4) = cel2.Value Then
MsgBox cel2.Value
End If

Next cel2

Next cel1

end sub

le msgbox va dans ce cas afficher "toto" puisque cette mention figure en B1
mais si je tape un numéro par ex 8000 à la place de " toto" en A1 et en B1
rien ne s'affiche!
Left() ne fonctionnerait-il pas qu'avec des données de type string ?
Y a-t-il une autre possibilité ?

Merci pour votre aide




Bonjour,


La réponse se trouve dans la fonction str(valeur)
(voir aussi trim s'il y a des espaces indédirable)

cela dit, left fonctionne avec les chiffres chez moi !

FranckyONE

Avatar
michdenis
Bonjour Bibou,

Essaie ceci :

'-----------------
Dim Cel1 As Range
With Worksheets("feuil1")
For Each Cel1 In .Range("a1:a4")
If Trim(Left(Cel1.Value, 4)) = Trim(Str(Cel1.Offset(, 1))) Then
MsgBox Cel1.Offset(, 1)
End If
Next
End With
'-----------------


Salutations!



"Bidou" a écrit dans le message de news: 436752de$0$1010$
Bonjour,

Ces lignes de programme fonctionnent avec des valeurs de type string mais
pas numérique et c'est justement ce que je voudrais!

A1:A4 contiennent :

a1 > toto azertyxxxx
a2> tata azertymmmm
a3> titi azertybbbb
a4> tutu azertycccc

B1:B4 contiennent:

B1> toto
b2> xxxx
B3> rrrrrrr
B4> bbbbb


Worksheets("feuil1").Activate

Dim cel1 As Range
Dim cel2 As Range
For Each cel1 In Worksheets("feuil1").Range("a1:a4")
For Each cel2 In Worksheets("feuil1").Range("b1:b4")

If Left(cel1.Value, 4) = cel2.Value Then
MsgBox cel2.Value
End If

Next cel2

Next cel1

end sub

le msgbox va dans ce cas afficher "toto" puisque cette mention figure en B1
mais si je tape un numéro par ex 8000 à la place de " toto" en A1 et en B1
rien ne s'affiche!
Left() ne fonctionnerait-il pas qu'avec des données de type string ?
Y a-t-il une autre possibilité ?

Merci pour votre aide
Avatar
JLuc
*Bonjour Bidou*,
Le bout de classeur que je t'ai joint dans ton fil du 26/10/2005 à
22:37:02 ne te convenais pas ? J'ai pas eu de retour ! :/

Bonjour,

Ces lignes de programme fonctionnent avec des valeurs de type string mais
pas numérique et c'est justement ce que je voudrais!

A1:A4 contiennent :

a1 > toto azertyxxxx
a2> tata azertymmmm
a3> titi azertybbbb
a4> tutu azertycccc

B1:B4 contiennent:

B1> toto
b2> xxxx
B3> rrrrrrr
B4> bbbbb


Worksheets("feuil1").Activate

Dim cel1 As Range
Dim cel2 As Range
For Each cel1 In Worksheets("feuil1").Range("a1:a4")
For Each cel2 In Worksheets("feuil1").Range("b1:b4")

If Left(cel1.Value, 4) = cel2.Value Then
MsgBox cel2.Value
End If

Next cel2

Next cel1

end sub

le msgbox va dans ce cas afficher "toto" puisque cette mention figure en B1
mais si je tape un numéro par ex 8000 à la place de " toto" en A1 et en B1
rien ne s'affiche!
Left() ne fonctionnerait-il pas qu'avec des données de type string ?
Y a-t-il une autre possibilité ?

Merci pour votre aide



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/

Avatar
Bidou
Bonsoir Jluc,

C'est vrai que je suis un peu brouillon je me suis un peu dispersé sur le
forum en pensant qu'il fallait que je repose mon problème plus
clairement.Mais j'ai quand même utilisé ton propre code pour mes
tentatives.Par contre, je viens tout juste de prendre connaissance de ta
réponse ( avec ton fichier joint ) et bien sûr je m'empresse de
l'essayer...Je reviens pour indiquer les résultats.

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

*Bonjour Bidou*,
Le bout de classeur que je t'ai joint dans ton fil du 26/10/2005 à
22:37:02 ne te convenais pas ? J'ai pas eu de retour ! :/

Bonjour,

Ces lignes de programme fonctionnent avec des valeurs de type string
mais


pas numérique et c'est justement ce que je voudrais!

A1:A4 contiennent :

a1 > toto azertyxxxx
a2> tata azertymmmm
a3> titi azertybbbb
a4> tutu azertycccc

B1:B4 contiennent:

B1> toto
b2> xxxx
B3> rrrrrrr
B4> bbbbb


Worksheets("feuil1").Activate

Dim cel1 As Range
Dim cel2 As Range
For Each cel1 In Worksheets("feuil1").Range("a1:a4")
For Each cel2 In Worksheets("feuil1").Range("b1:b4")

If Left(cel1.Value, 4) = cel2.Value Then
MsgBox cel2.Value
End If

Next cel2

Next cel1

end sub

le msgbox va dans ce cas afficher "toto" puisque cette mention figure
en B1


mais si je tape un numéro par ex 8000 à la place de " toto" en A1 et
en B1


rien ne s'affiche!
Left() ne fonctionnerait-il pas qu'avec des données de type string ?
Y a-t-il une autre possibilité ?

Merci pour votre aide



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/





Avatar
Bidou
Bonsoir jluc,

Un exemple de fichier contenant les plages à analyser valant mieux que de
longues explications, comment fait-on pour joindre un fichier- test comme tu
le fais ?

Merci pour ton aide

J'ai essayé ton bout de code mais j'ai du raté quelque chose parce que çà
ne fonctionne pas.



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

*Bonjour Bidou*,
Le bout de classeur que je t'ai joint dans ton fil du 26/10/2005 à
22:37:02 ne te convenais pas ? J'ai pas eu de retour ! :/

Bonjour,

Ces lignes de programme fonctionnent avec des valeurs de type string
mais


pas numérique et c'est justement ce que je voudrais!

A1:A4 contiennent :

a1 > toto azertyxxxx
a2> tata azertymmmm
a3> titi azertybbbb
a4> tutu azertycccc

B1:B4 contiennent:

B1> toto
b2> xxxx
B3> rrrrrrr
B4> bbbbb


Worksheets("feuil1").Activate

Dim cel1 As Range
Dim cel2 As Range
For Each cel1 In Worksheets("feuil1").Range("a1:a4")
For Each cel2 In Worksheets("feuil1").Range("b1:b4")

If Left(cel1.Value, 4) = cel2.Value Then
MsgBox cel2.Value
End If

Next cel2

Next cel1

end sub

le msgbox va dans ce cas afficher "toto" puisque cette mention figure
en B1


mais si je tape un numéro par ex 8000 à la place de " toto" en A1 et
en B1


rien ne s'affiche!
Left() ne fonctionnerait-il pas qu'avec des données de type string ?
Y a-t-il une autre possibilité ?

Merci pour votre aide



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/





Avatar
JLuc
*Bonjour Bidou*,
www.cjoint.com

Bonsoir jluc,

Un exemple de fichier contenant les plages à analyser valant mieux que de
longues explications, comment fait-on pour joindre un fichier- test comme tu
le fais ?

Merci pour ton aide

J'ai essayé ton bout de code mais j'ai du raté quelque chose parce que çà
ne fonctionne pas.



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

*Bonjour Bidou*,
Le bout de classeur que je t'ai joint dans ton fil du 26/10/2005 à
22:37:02 ne te convenais pas ? J'ai pas eu de retour ! :/

Bonjour,

Ces lignes de programme fonctionnent avec des valeurs de type string mais
pas numérique et c'est justement ce que je voudrais!

A1:A4 contiennent :

a1 > toto azertyxxxx
a2> tata azertymmmm
a3> titi azertybbbb
a4> tutu azertycccc

B1:B4 contiennent:

B1> toto
b2> xxxx
B3> rrrrrrr
B4> bbbbb


Worksheets("feuil1").Activate

Dim cel1 As Range
Dim cel2 As Range
For Each cel1 In Worksheets("feuil1").Range("a1:a4")
For Each cel2 In Worksheets("feuil1").Range("b1:b4")

If Left(cel1.Value, 4) = cel2.Value Then
MsgBox cel2.Value
End If

Next cel2

Next cel1

end sub

le msgbox va dans ce cas afficher "toto" puisque cette mention figure en
B1 mais si je tape un numéro par ex 8000 à la place de " toto" en A1 et
en B1 rien ne s'affiche!
Left() ne fonctionnerait-il pas qu'avec des données de type string ?
Y a-t-il une autre possibilité ?

Merci pour votre aide



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/




--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/



Avatar
Bidou
Bonsoir Jluc

J'ai adapté ton code et çà fonctionne très bien les lignes que j'ai retenues
sont les suivantes:

Dim cellule1 As Range
Dim cellule2 As Range

For Each cellule1 In Worksheets("feuil1").Range("a1:a" &
Range("a65536").End(xlUp).Row)
For Each cellule2 In Worksheets("feuil1").Range("b1:b" &
Range("b65536").End(xlUp).Row)

If Int(Left(cellule1.Value), 4)) = cellule2.Value Then
MsgBox cellule2.Value

End If
Next cellule2
Next cellule1



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

*Bonjour Bidou*,
www.cjoint.com

Bonsoir jluc,

Un exemple de fichier contenant les plages à analyser valant mieux que
de


longues explications, comment fait-on pour joindre un fichier- test
comme tu


le fais ?

Merci pour ton aide

J'ai essayé ton bout de code mais j'ai du raté quelque chose parce que
çà


ne fonctionne pas.



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

*Bonjour Bidou*,
Le bout de classeur que je t'ai joint dans ton fil du 26/10/2005 à
22:37:02 ne te convenais pas ? J'ai pas eu de retour ! :/

Bonjour,

Ces lignes de programme fonctionnent avec des valeurs de type string
mais




pas numérique et c'est justement ce que je voudrais!

A1:A4 contiennent :

a1 > toto azertyxxxx
a2> tata azertymmmm
a3> titi azertybbbb
a4> tutu azertycccc

B1:B4 contiennent:

B1> toto
b2> xxxx
B3> rrrrrrr
B4> bbbbb


Worksheets("feuil1").Activate

Dim cel1 As Range
Dim cel2 As Range
For Each cel1 In Worksheets("feuil1").Range("a1:a4")
For Each cel2 In Worksheets("feuil1").Range("b1:b4")

If Left(cel1.Value, 4) = cel2.Value Then
MsgBox cel2.Value
End If

Next cel2

Next cel1

end sub

le msgbox va dans ce cas afficher "toto" puisque cette mention figure
en




B1 mais si je tape un numéro par ex 8000 à la place de " toto" en A1
et




en B1 rien ne s'affiche!
Left() ne fonctionnerait-il pas qu'avec des données de type string ?
Y a-t-il une autre possibilité ?

Merci pour votre aide



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/




--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/







Avatar
JLuc
*Bonjour Bidou*,
Content pour toi que ton pb s'arrange ;-)
Bonsoir Jluc

J'ai adapté ton code et çà fonctionne très bien les lignes que j'ai retenues
sont les suivantes:

Dim cellule1 As Range
Dim cellule2 As Range

For Each cellule1 In Worksheets("feuil1").Range("a1:a" &
Range("a65536").End(xlUp).Row)
For Each cellule2 In Worksheets("feuil1").Range("b1:b" &
Range("b65536").End(xlUp).Row)

If Int(Left(cellule1.Value), 4)) = cellule2.Value Then
MsgBox cellule2.Value

End If
Next cellule2
Next cellule1



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

*Bonjour Bidou*,
www.cjoint.com

Bonsoir jluc,

Un exemple de fichier contenant les plages à analyser valant mieux que de
longues explications, comment fait-on pour joindre un fichier- test comme
tu le fais ?

Merci pour ton aide

J'ai essayé ton bout de code mais j'ai du raté quelque chose parce que çà
ne fonctionne pas.



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

*Bonjour Bidou*,
Le bout de classeur que je t'ai joint dans ton fil du 26/10/2005 à
22:37:02 ne te convenais pas ? J'ai pas eu de retour ! :/

Bonjour,

Ces lignes de programme fonctionnent avec des valeurs de type string mais
pas numérique et c'est justement ce que je voudrais!

A1:A4 contiennent :

a1 > toto azertyxxxx
a2> tata azertymmmm
a3> titi azertybbbb
a4> tutu azertycccc

B1:B4 contiennent:

B1> toto
b2> xxxx
B3> rrrrrrr
B4> bbbbb


Worksheets("feuil1").Activate

Dim cel1 As Range
Dim cel2 As Range
For Each cel1 In Worksheets("feuil1").Range("a1:a4")
For Each cel2 In Worksheets("feuil1").Range("b1:b4")

If Left(cel1.Value, 4) = cel2.Value Then
MsgBox cel2.Value
End If

Next cel2

Next cel1

end sub

le msgbox va dans ce cas afficher "toto" puisque cette mention figure en
B1 mais si je tape un numéro par ex 8000 à la place de " toto" en A1 et
en B1 rien ne s'affiche!
Left() ne fonctionnerait-il pas qu'avec des données de type string ?
Y a-t-il une autre possibilité ?

Merci pour votre aide



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/




--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/




--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS





Avatar
Bidou
Bonjour

Merci à tous les contributeurs pour leur aide



"Bidou" a écrit dans le message de news:
436752de$0$1010$
Bonjour,

Ces lignes de programme fonctionnent avec des valeurs de type string mais
pas numérique et c'est justement ce que je voudrais!

A1:A4 contiennent :

a1 > toto azertyxxxx
a2> tata azertymmmm
a3> titi azertybbbb
a4> tutu azertycccc

B1:B4 contiennent:

B1> toto
b2> xxxx
B3> rrrrrrr
B4> bbbbb


Worksheets("feuil1").Activate

Dim cel1 As Range
Dim cel2 As Range
For Each cel1 In Worksheets("feuil1").Range("a1:a4")
For Each cel2 In Worksheets("feuil1").Range("b1:b4")

If Left(cel1.Value, 4) = cel2.Value Then
MsgBox cel2.Value
End If

Next cel2

Next cel1

end sub

le msgbox va dans ce cas afficher "toto" puisque cette mention figure en
B1

mais si je tape un numéro par ex 8000 à la place de " toto" en A1 et en
B1

rien ne s'affiche!
Left() ne fonctionnerait-il pas qu'avec des données de type string ?
Y a-t-il une autre possibilité ?

Merci pour votre aide