Range VBA
Le
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
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
'----------------
For Each c In Range("a2:b" & Cells(Rows.Count, 1).End(xlUp).Row)
c.Value = Sans_accents$(c.Value)
Next
'--------------
--
Salutations
JJ
"Albert"
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"
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,
'----------------
For Each c In Range("a2:b" & Cells(Rows.Count, 1).End(xlUp).Row)
c.Value = Sans_accents$(c.Value)
Next
'--------------
--
Salutations
JJ
"Albert" m4qpev$cip$
---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
[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"
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" news:m4qsr5$pb2$
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
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" m4qt6l$qub$
---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
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"
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"
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" news:m4r6kp$hqv$