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

Range VBA

23 réponses
Avatar
Albert
Bonjour

Comment ré-écrire ce qui suit pour inclure la colonne A (A2 jusquà la fin)
et la colonne B (B2 jusqu'à la fin)?
----------------------
Sub EnleveAccent()
' Cette MACRO enlève tous les caractères accentuées et spécaux
Dim c As Range, Ctr As Long, i As Integer
For Each c In Range([A2], Cells(Rows.Count, 1).End(xlUp))
c.Value = Sans_accents$(c.Value)
Next c
End Sub
--------------------------------------------

Merci

--
albertri-at-videotron.ca.invalid

10 réponses

1 2 3
Avatar
Jacky
Bonsoir,

...pour inclure la colonne A (A2 jusquà la fin) et la colonne B (B2 jusqu'à la fin)


'----------------
For Each c In Range("a2:b" & Cells(Rows.Count, 1).End(xlUp).Row)
c.Value = Sans_accents$(c.Value)
Next
'--------------
--
Salutations
JJ


"Albert" a écrit dans le message de news: m4qpev$cip$
Bonjour

Comment ré-écrire ce qui suit pour inclure la colonne A (A2 jusquà la fin) et la colonne B (B2 jusqu'à la
fin)?
----------------------
Sub EnleveAccent()
' Cette MACRO enlève tous les caractères accentuées et spécaux
Dim c As Range, Ctr As Long, i As Integer
For Each c In Range([A2], Cells(Rows.Count, 1).End(xlUp))
c.Value = Sans_accents$(c.Value)
Next c
End Sub
--------------------------------------------

Merci

--
albertri-at-videotron.ca.invalid
Avatar
Jacky
Re..
Si une colonne peut-être plus longue que l'autre..
'----------------
Sub EnleveAccent()
' Cette MACRO enlève tous les caractères accentuées et spécaux
Dim c As Range, col As Long
col = IIf([countA(A:A)] > [countA(b:b)], 1, 2)
For Each c In Range("a2:b" & Cells(Rows.Count, col).End(xlUp).Row)
If c <> "" Then c.Value = Sans_accents$(c.Value)
Next c
End Sub
'----------------

--
Salutations
JJ


"Jacky" a écrit dans le message de news: m4qr6o$i3g$
Bonsoir,

...pour inclure la colonne A (A2 jusquà la fin) et la colonne B (B2 jusqu'à la fin)


'----------------
For Each c In Range("a2:b" & Cells(Rows.Count, 1).End(xlUp).Row)
c.Value = Sans_accents$(c.Value)
Next
'--------------
--
Salutations
JJ


"Albert" a écrit dans le message de news: m4qpev$cip$
Bonjour

Comment ré-écrire ce qui suit pour inclure la colonne A (A2 jusquà la fin) et la colonne B (B2 jusqu'à la
fin)?
----------------------
Sub EnleveAccent()
' Cette MACRO enlève tous les caractères accentuées et spécaux
Dim c As Range, Ctr As Long, i As Integer
For Each c In Range([A2], Cells(Rows.Count, 1).End(xlUp))
c.Value = Sans_accents$(c.Value)
Next c
End Sub
--------------------------------------------

Merci

--
albertri-at-videotron.ca.invalid




Avatar
Jacquouille
Bonsoir Jacky,
Juste une question: -)
Je sais que c'est la fin de semaine, mais, n'y aurait-il pas lieu de
demander poliment à Excel quelle colonne est la plus longue ( a ou b), vu
que le demandeur semble y faire allusion, mais sans le dire?
Un truc du genre (non testé) ????
derLA= [A65536].End(3).Row
derLB= [B65536].End(3).Row
if derLA>derLB then derLÞrLA:else derLÞrLB
For Each c In Range("a2:b" & derL)
[c] = Sans_accents$(c.Value)
Next

Bonne soirée
Jacques.


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Jacky" a écrit dans le message de groupe de discussion :
m4qr6o$i3g$

Bonsoir,

...pour inclure la colonne A (A2 jusquà la fin) et la colonne B (B2 jusqu'à
la fin)


'----------------
For Each c In Range("a2:b" & Cells(Rows.Count, 1).End(xlUp).Row)
c.Value = Sans_accents$(c.Value)
Next
'--------------
--
Salutations
JJ


"Albert" a écrit dans le message de news:
m4qpev$cip$
Bonjour

Comment ré-écrire ce qui suit pour inclure la colonne A (A2 jusquà la fin)
et la colonne B (B2 jusqu'à la fin)?
----------------------
Sub EnleveAccent()
' Cette MACRO enlève tous les caractères accentuées et spécaux
Dim c As Range, Ctr As Long, i As Integer
For Each c In Range([A2], Cells(Rows.Count, 1).End(xlUp))
c.Value = Sans_accents$(c.Value)
Next c
End Sub
--------------------------------------------

Merci

--
albertri-at-videotron.ca.invalid




---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
Avatar
Jacky
Hello Jacques,
[A65536].End(3).Row
Beurggg!
Ne fonctionne pas si les lignes sont plus longues que 65536.
Je préfère
Cells(Rows.Count, 1).End(xlUp).Row

Perso , je ferai comme ceci
'----------------
Sub EnleveAccent()
' Cette MACRO enlève tous les caractères accentuées et spécaux
Dim c As Range, col As Long
'col retourne la colonne la plus longue: soit 1(A) soit 2(B)
col = IIf(Cells(Rows.Count, 1).End(xlUp).Row > Cells(Rows.Count, 2).End(xlUp).Row, 1, 2)
For Each c In Range("a2:b" & Cells(Rows.Count, col).End(xlUp).Row)
If c <> "" Then c.Value = Sans_accents$(c.Value)
Next c
End Sub
'------------------

--
Salutations
JJ


"Jacquouille" a écrit dans le message de news: m4qt6l$qub$
Bonsoir Jacky,
Juste une question: -)
Je sais que c'est la fin de semaine, mais, n'y aurait-il pas lieu de demander poliment à Excel quelle
colonne est la plus longue ( a ou b), vu que le demandeur semble y faire allusion, mais sans le dire?
Un truc du genre (non testé) ????
derLA= [A65536].End(3).Row
derLB= [B65536].End(3).Row
if derLA>derLB then derLÞrLA:else derLÞrLB
For Each c In Range("a2:b" & derL)
[c] = Sans_accents$(c.Value)
Next

Bonne soirée
Jacques.


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Jacky" a écrit dans le message de groupe de discussion : m4qr6o$i3g$

Bonsoir,

...pour inclure la colonne A (A2 jusquà la fin) et la colonne B (B2 jusqu'à la fin)


'----------------
For Each c In Range("a2:b" & Cells(Rows.Count, 1).End(xlUp).Row)
c.Value = Sans_accents$(c.Value)
Next
'--------------
--
Salutations
JJ


"Albert" a écrit dans le message de news: m4qpev$cip$
Bonjour

Comment ré-écrire ce qui suit pour inclure la colonne A (A2 jusquà la fin) et la colonne B (B2 jusqu'à la
fin)?
----------------------
Sub EnleveAccent()
' Cette MACRO enlève tous les caractères accentuées et spécaux
Dim c As Range, Ctr As Long, i As Integer
For Each c In Range([A2], Cells(Rows.Count, 1).End(xlUp))
c.Value = Sans_accents$(c.Value)
Next c
End Sub
--------------------------------------------

Merci

--
albertri-at-videotron.ca.invalid




---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast!
Antivirus est active.
http://www.avast.com

Avatar
Albert
Merci Jacky
La correction faiisait bien, mais effectivement les colonnes peuvent être de
différentes longueurs.
Je reteste plus tard ce soir, maintenant on m'attend pour souper... et je
reviens.

Merci

Albert


"Jacky" a écrit dans le message de
news:m4qsr5$pb2$
Re..
Si une colonne peut-être plus longue que l'autre..
'----------------
Sub EnleveAccent()
' Cette MACRO enlève tous les caractères accentuées et spécaux
Dim c As Range, col As Long
col = IIf([countA(A:A)] > [countA(b:b)], 1, 2)
For Each c In Range("a2:b" & Cells(Rows.Count, col).End(xlUp).Row)
If c <> "" Then c.Value = Sans_accents$(c.Value)
Next c
End Sub
'----------------

--
Salutations
JJ


"Jacky" a écrit dans le message de news:
m4qr6o$i3g$
Bonsoir,

...pour inclure la colonne A (A2 jusquà la fin) et la colonne B (B2
jusqu'à la fin)


'----------------
For Each c In Range("a2:b" & Cells(Rows.Count, 1).End(xlUp).Row)
c.Value = Sans_accents$(c.Value)
Next
'--------------
--
Salutations
JJ


"Albert" a écrit dans le message de news:
m4qpev$cip$
Bonjour

Comment ré-écrire ce qui suit pour inclure la colonne A (A2 jusquà la
fin) et la colonne B (B2 jusqu'à la fin)?
----------------------
Sub EnleveAccent()
' Cette MACRO enlève tous les caractères accentuées et spécaux
Dim c As Range, Ctr As Long, i As Integer
For Each c In Range([A2], Cells(Rows.Count, 1).End(xlUp))
c.Value = Sans_accents$(c.Value)
Next c
End Sub
--------------------------------------------

Merci

--
albertri-at-videotron.ca.invalid








Avatar
GL
Le 22/11/2014 20:50, Albert a écrit :
Bonjour

Comment ré-écrire ce qui suit pour inclure la colonne A (A2 jusquà la
fin) et la colonne B (B2 jusqu'à la fin)?
----------------------
Sub EnleveAccent()
' Cette MACRO enlève tous les caractères accentuées et spécaux
Dim c As Range, Ctr As Long, i As Integer
For Each c In Range([A2], Cells(Rows.Count, 1).End(xlUp))
c.Value = Sans_accents$(c.Value)
Next c
End Sub



Je propose au plus court (mais évidemment c'est pas hyper général,
par contre c'est plus facile pour s'en souvenir peut-être...)

For Each c In Intersect([A2].Worksheet.UsedRange, [A2:B999999])
...
Next
Avatar
Jacquouille
Pourquoi tu testes si c n'est pas vide? Si vide = pas d'accent ....
Pour les + de 65.000 lignes, tu as raison. mais, je n'y pense jamais car je
suis toujours en 2003. (manière de ne pas vieillir). -))
Bonne soirée
Jacques.


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Jacky" a écrit dans le message de groupe de discussion :
m4qu7l$tps$

Hello Jacques,
[A65536].End(3).Row
Beurggg!
Ne fonctionne pas si les lignes sont plus longues que 65536.
Je préfère
Cells(Rows.Count, 1).End(xlUp).Row

Perso , je ferai comme ceci
'----------------
Sub EnleveAccent()
' Cette MACRO enlève tous les caractères accentuées et spécaux
Dim c As Range, col As Long
'col retourne la colonne la plus longue: soit 1(A) soit 2(B)
col = IIf(Cells(Rows.Count, 1).End(xlUp).Row > Cells(Rows.Count,
2).End(xlUp).Row, 1, 2)
For Each c In Range("a2:b" & Cells(Rows.Count, col).End(xlUp).Row)
If c <> "" Then c.Value = Sans_accents$(c.Value)
Next c
End Sub
'------------------

--
Salutations
JJ


"Jacquouille" a écrit dans le message de news:
m4qt6l$qub$
Bonsoir Jacky,
Juste une question: -)
Je sais que c'est la fin de semaine, mais, n'y aurait-il pas lieu de
demander poliment à Excel quelle colonne est la plus longue ( a ou b), vu
que le demandeur semble y faire allusion, mais sans le dire?
Un truc du genre (non testé) ????
derLA= [A65536].End(3).Row
derLB= [B65536].End(3).Row
if derLA>derLB then derLÞrLA:else derLÞrLB
For Each c In Range("a2:b" & derL)
[c] = Sans_accents$(c.Value)
Next

Bonne soirée
Jacques.


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Jacky" a écrit dans le message de groupe de discussion :
m4qr6o$i3g$

Bonsoir,

...pour inclure la colonne A (A2 jusquà la fin) et la colonne B (B2
jusqu'à la fin)


'----------------
For Each c In Range("a2:b" & Cells(Rows.Count, 1).End(xlUp).Row)
c.Value = Sans_accents$(c.Value)
Next
'--------------
--
Salutations
JJ


"Albert" a écrit dans le message de news:
m4qpev$cip$
Bonjour

Comment ré-écrire ce qui suit pour inclure la colonne A (A2 jusquà la
fin) et la colonne B (B2 jusqu'à la fin)?
----------------------
Sub EnleveAccent()
' Cette MACRO enlève tous les caractères accentuées et spécaux
Dim c As Range, Ctr As Long, i As Integer
For Each c In Range([A2], Cells(Rows.Count, 1).End(xlUp))
c.Value = Sans_accents$(c.Value)
Next c
End Sub
--------------------------------------------

Merci

--
albertri-at-videotron.ca.invalid




---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant
parce que la protection avast! Antivirus est active.
http://www.avast.com





---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
Avatar
Jacky
Re..
Pourquoi tu testes si c n'est pas vide? Si vide = pas d'accent


Ben OUI, donc pas besoin de faire appel à la fonction "Sans_accents$"
En plus on ne voit pas ce qu'elle fait cette fonction..
Enlever un accents sur une cellule vide pourrait provoquer un plantage.

La proposition de GL n'est pas mal non plus.
--
Salutations
JJ


"Jacquouille" a écrit dans le message de news: m4r3nq$bi9$
Pourquoi tu testes si c n'est pas vide? Si vide = pas d'accent ....
Pour les + de 65.000 lignes, tu as raison. mais, je n'y pense jamais car je suis toujours en 2003. (manière
de ne pas vieillir). -))
Bonne soirée
Jacques.


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Jacky" a écrit dans le message de groupe de discussion : m4qu7l$tps$

Hello Jacques,
[A65536].End(3).Row
Beurggg!
Ne fonctionne pas si les lignes sont plus longues que 65536.
Je préfère
Cells(Rows.Count, 1).End(xlUp).Row

Perso , je ferai comme ceci
'----------------
Sub EnleveAccent()
' Cette MACRO enlève tous les caractères accentuées et spécaux
Dim c As Range, col As Long
'col retourne la colonne la plus longue: soit 1(A) soit 2(B)
col = IIf(Cells(Rows.Count, 1).End(xlUp).Row > Cells(Rows.Count, 2).End(xlUp).Row, 1, 2)
For Each c In Range("a2:b" & Cells(Rows.Count, col).End(xlUp).Row)
If c <> "" Then c.Value = Sans_accents$(c.Value)
Next c
End Sub
'------------------

--
Salutations
JJ


"Jacquouille" a écrit dans le message de news: m4qt6l$qub$
Bonsoir Jacky,
Juste une question: -)
Je sais que c'est la fin de semaine, mais, n'y aurait-il pas lieu de demander poliment à Excel quelle
colonne est la plus longue ( a ou b), vu que le demandeur semble y faire allusion, mais sans le dire?
Un truc du genre (non testé) ????
derLA= [A65536].End(3).Row
derLB= [B65536].End(3).Row
if derLA>derLB then derLÞrLA:else derLÞrLB
For Each c In Range("a2:b" & derL)
[c] = Sans_accents$(c.Value)
Next

Bonne soirée
Jacques.


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Jacky" a écrit dans le message de groupe de discussion : m4qr6o$i3g$

Bonsoir,

...pour inclure la colonne A (A2 jusquà la fin) et la colonne B (B2 jusqu'à la fin)


'----------------
For Each c In Range("a2:b" & Cells(Rows.Count, 1).End(xlUp).Row)
c.Value = Sans_accents$(c.Value)
Next
'--------------
--
Salutations
JJ


"Albert" a écrit dans le message de news: m4qpev$cip$
Bonjour

Comment ré-écrire ce qui suit pour inclure la colonne A (A2 jusquà la fin) et la colonne B (B2 jusqu'à la
fin)?
----------------------
Sub EnleveAccent()
' Cette MACRO enlève tous les caractères accentuées et spécaux
Dim c As Range, Ctr As Long, i As Integer
For Each c In Range([A2], Cells(Rows.Count, 1).End(xlUp))
c.Value = Sans_accents$(c.Value)
Next c
End Sub
--------------------------------------------

Merci

--
albertri-at-videotron.ca.invalid




---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast!
Antivirus est active.
http://www.avast.com





---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast!
Antivirus est active.
http://www.avast.com

Avatar
Jacky
Hello,

Et pour être compatible au version antérieur
;o))
For Each c In Intersect([A2].Worksheet.UsedRange, Range("A2:B" & Rows.Count))

--
Salutations
JJ


"GL" a écrit dans le message de news: 5470ffcc$0$12771$
Le 22/11/2014 20:50, Albert a écrit :
Bonjour

Comment ré-écrire ce qui suit pour inclure la colonne A (A2 jusquà la
fin) et la colonne B (B2 jusqu'à la fin)?
----------------------
Sub EnleveAccent()
' Cette MACRO enlève tous les caractères accentuées et spécaux
Dim c As Range, Ctr As Long, i As Integer
For Each c In Range([A2], Cells(Rows.Count, 1).End(xlUp))
c.Value = Sans_accents$(c.Value)
Next c
End Sub



Je propose au plus court (mais évidemment c'est pas hyper général,
par contre c'est plus facile pour s'en souvenir peut-être...)

For Each c In Intersect([A2].Worksheet.UsedRange, [A2:B999999])
...
Next


Avatar
Albert
Bonsoir ou Bonjour selon

J'ai finalement opté pour cette dernière suggestion :

For Each c In Intersect([A2].Worksheet.UsedRange, Range("A2:B" &
Rows.Count))

Si les deux colonnes A ou B sont de longueurs différentes les accents sont
enlevés jusqu'à la dernière cellule.

merci

albert

"Jacky" a écrit dans le message de
news:m4r6kp$hqv$
Hello,

Et pour être compatible au version antérieur
;o))
For Each c In Intersect([A2].Worksheet.UsedRange, Range("A2:B" &
Rows.Count))

--
Salutations
JJ


"GL" a écrit dans le message de news:
5470ffcc$0$12771$
Le 22/11/2014 20:50, Albert a écrit :
Bonjour

Comment ré-écrire ce qui suit pour inclure la colonne A (A2 jusquà la
fin) et la colonne B (B2 jusqu'à la fin)?
----------------------
Sub EnleveAccent()
' Cette MACRO enlève tous les caractères accentuées et spécaux
Dim c As Range, Ctr As Long, i As Integer
For Each c In Range([A2], Cells(Rows.Count, 1).End(xlUp))
c.Value = Sans_accents$(c.Value)
Next c
End Sub



Je propose au plus court (mais évidemment c'est pas hyper général,
par contre c'est plus facile pour s'en souvenir peut-être...)

For Each c In Intersect([A2].Worksheet.UsedRange, [A2:B999999])
...
Next






1 2 3