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
--------------------------------------------
"Jacky" a écrit dans le message de news:m4r4dn$cs3$
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.
Une petite explication ici.
Au début de la saison notre Base de données Access génére la liste des 650 membres, "Nom, Prénom" pas ordre alphabétique qui est placée dans un fichier EXCEL de présences.Les présences sont prises à chaque réunion, deux par semaines, environ 100 présences à chacune. Pour trouver rapidement les noms, un filtre est utilisé, on entre les premiers caractères, mais si il y a un accent il faut rechercher les différentes possibilités, tel Bel, Bél, Bèl etc...
Pour faciliter la tâche les accents sont enlevés et la recherche est plus rapide, cela ne cause aucun problème.
Ce n'est pas moi qui tappe les données, je suis seulement un soutien technique. Plusieurs personnes collabrent pour les différentes tâches.
Régulièrement de nouveaux noms sont ajoutés et parfois retirés, il y a aussi des doublons et des omissions, à cette liste présences. La plupart des erreurs sont facilement trouvées et corrigées. Mais parfois c'est difficile, alors je génère une nouvelle liste avec accents que le place dans un fichier EXCEL colonne A et je copie la liste du fichier présence dans la colonne B,. et je compare avec =SI(A2²;"";"FAUX") ou =EQUIV(B2;A:A;0) et quelques manipulations à cause des doublons et omissions. Pour cette recherche d'erreur il faut enlever les accents de la colonne A, aussi vérifier la colonne B qui ne devrait n'avoir aucun accent. --------------------------------- Le filtre du fichier présence: Sub Recherche() Dim Ycritere As String Init Ycritere = InputBox("Saisir le début du nom =?") If Trim(Ycritere) = "" Then Init Exit Sub Else ActiveSheet.Range("B2").AutoFilter Field:=1, Criteria1:="=" & _ Ycritere & "*", Operator:=xlAnd SePlacer End If End Sub -------------------------------
Merci
Albert
Bonsoir / Bonjour
"Jacky" <Dupond@marcel.fr> a écrit dans le message de
news:m4r4dn$cs3$1@speranza.aioe.org...
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.
Une petite explication ici.
Au début de la saison notre Base de données Access génére la liste des 650
membres, "Nom, Prénom" pas ordre alphabétique qui est placée dans un
fichier EXCEL de présences.Les présences sont prises à chaque réunion, deux
par semaines, environ 100 présences à chacune. Pour trouver rapidement les
noms, un filtre est utilisé, on entre les premiers caractères, mais si il y
a un accent il faut rechercher les différentes possibilités, tel Bel, Bél,
Bèl etc...
Pour faciliter la tâche les accents sont enlevés et la recherche est plus
rapide, cela ne cause aucun problème.
Ce n'est pas moi qui tappe les données, je suis seulement un soutien
technique. Plusieurs personnes collabrent pour les différentes tâches.
Régulièrement de nouveaux noms sont ajoutés et parfois retirés, il y a aussi
des doublons et des omissions, à cette liste présences. La plupart des
erreurs sont facilement trouvées et corrigées. Mais parfois c'est difficile,
alors je génère une nouvelle liste avec accents que le place dans un fichier
EXCEL colonne A et je copie la liste du fichier présence dans la colonne B,.
et je compare avec =SI(A2²;"";"FAUX") ou =EQUIV(B2;A:A;0) et
quelques manipulations à cause des doublons et omissions.
Pour cette recherche d'erreur il faut enlever les accents de la colonne A,
aussi vérifier la colonne B qui ne devrait n'avoir aucun accent.
---------------------------------
Le filtre du fichier présence:
Sub Recherche()
Dim Ycritere As String
Init
Ycritere = InputBox("Saisir le début du nom =?")
If Trim(Ycritere) = "" Then
Init
Exit Sub
Else
ActiveSheet.Range("B2").AutoFilter Field:=1, Criteria1:="=" & _
Ycritere & "*", Operator:=xlAnd
SePlacer
End If
End Sub
-------------------------------
"Jacky" a écrit dans le message de news:m4r4dn$cs3$
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.
Une petite explication ici.
Au début de la saison notre Base de données Access génére la liste des 650 membres, "Nom, Prénom" pas ordre alphabétique qui est placée dans un fichier EXCEL de présences.Les présences sont prises à chaque réunion, deux par semaines, environ 100 présences à chacune. Pour trouver rapidement les noms, un filtre est utilisé, on entre les premiers caractères, mais si il y a un accent il faut rechercher les différentes possibilités, tel Bel, Bél, Bèl etc...
Pour faciliter la tâche les accents sont enlevés et la recherche est plus rapide, cela ne cause aucun problème.
Ce n'est pas moi qui tappe les données, je suis seulement un soutien technique. Plusieurs personnes collabrent pour les différentes tâches.
Régulièrement de nouveaux noms sont ajoutés et parfois retirés, il y a aussi des doublons et des omissions, à cette liste présences. La plupart des erreurs sont facilement trouvées et corrigées. Mais parfois c'est difficile, alors je génère une nouvelle liste avec accents que le place dans un fichier EXCEL colonne A et je copie la liste du fichier présence dans la colonne B,. et je compare avec =SI(A2²;"";"FAUX") ou =EQUIV(B2;A:A;0) et quelques manipulations à cause des doublons et omissions. Pour cette recherche d'erreur il faut enlever les accents de la colonne A, aussi vérifier la colonne B qui ne devrait n'avoir aucun accent. --------------------------------- Le filtre du fichier présence: Sub Recherche() Dim Ycritere As String Init Ycritere = InputBox("Saisir le début du nom =?") If Trim(Ycritere) = "" Then Init Exit Sub Else ActiveSheet.Range("B2").AutoFilter Field:=1, Criteria1:="=" & _ Ycritere & "*", Operator:=xlAnd SePlacer End If End Sub -------------------------------
Merci
Albert
MichD
Bonjour,
Ceci teste toutes les cellules contenant du texte dans les colonnes A et B de ladite feuille.
On Error Resume next est là pour éviter qu'une erreur soit générée dans le cas où tu n'as pas au moins une cellule contenant du texte dans la colonne A et B.
'------------------------------------------------- Sub test() Dim Rg As Range, C As Range, DerLig As Long On Error Resume next With Worksheets("Feuil1") DerLig = .Range("A:B").Find("*", LookIn:=xlValues, _ SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row Set Rg = .Range("A1:B" & DerLig).SpecialCells(xlCellTypeConstants, 2) End With For Each C In Rg ' C.Value = Sans_accents$(c.Value) Next End Sub '-------------------------------------------------
Bonjour,
Ceci teste toutes les cellules contenant du texte dans les colonnes A et B
de ladite feuille.
On Error Resume next est là pour éviter qu'une erreur soit générée dans le
cas où tu n'as pas
au moins une cellule contenant du texte dans la colonne A et B.
'-------------------------------------------------
Sub test()
Dim Rg As Range, C As Range, DerLig As Long
On Error Resume next
With Worksheets("Feuil1")
DerLig = .Range("A:B").Find("*", LookIn:=xlValues, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Set Rg = .Range("A1:B" & DerLig).SpecialCells(xlCellTypeConstants, 2)
End With
For Each C In Rg
' C.Value = Sans_accents$(c.Value)
Next
End Sub
'-------------------------------------------------
Ceci teste toutes les cellules contenant du texte dans les colonnes A et B de ladite feuille.
On Error Resume next est là pour éviter qu'une erreur soit générée dans le cas où tu n'as pas au moins une cellule contenant du texte dans la colonne A et B.
'------------------------------------------------- Sub test() Dim Rg As Range, C As Range, DerLig As Long On Error Resume next With Worksheets("Feuil1") DerLig = .Range("A:B").Find("*", LookIn:=xlValues, _ SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row Set Rg = .Range("A1:B" & DerLig).SpecialCells(xlCellTypeConstants, 2) End With For Each C In Rg ' C.Value = Sans_accents$(c.Value) Next End Sub '-------------------------------------------------
GL
Le 23/11/2014 11:49, MichD a écrit :
Bonjour,
Ceci teste toutes les cellules contenant du texte dans les colonnes A et B de ladite feuille.
On Error Resume next est là pour éviter qu'une erreur soit générée dans le cas où tu n'as pas au moins une cellule contenant du texte dans la colonne A et B.
Oui ce sont les côtés pénibles de .SpecialCells : 1/ les erreurs générées 2/ un comportement bizaroïde : [A1].SpecialCells(xlCellTypeConstants) renvoie la meme chose que : [A1].Worksheet.UsedRange.SpecialCells(xlCellTypeConstants) 3/ Si le deuxième argument peut se sommer : ex: [A1:B200].SpecialCells(xlCellTypeConstants, xlLogical+xlNumbers) Il n'en est pas de même du premier argument : [A1:B200].SpecialCells(xlCellTypeConstants + xlCellTypeFormulas) ne fonctionne pas.
(c'est ce qui m'a conduit à réécrire SpecialCells en VBA, pour corriger ces 3 anomalies)
Dans le cas de l'OP on pourrait faire plus simplement : On Error Resume Next Set Rng = Intersect([A2:B99999], _ [A2:B99999].SpecialCells(xlCellTypeConstants, xlTextValues)) If Not Rng Is Nothing Then For Each c In Rng.Cells ..... Next
Bon dimanche.
'------------------------------------------------- Sub test() Dim Rg As Range, C As Range, DerLig As Long On Error Resume next With Worksheets("Feuil1") DerLig = .Range("A:B").Find("*", LookIn:=xlValues, _ SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row Set Rg = .Range("A1:B" & DerLig).SpecialCells(xlCellTypeConstants, 2) End With For Each C In Rg ' C.Value = Sans_accents$(c.Value) Next End Sub '-------------------------------------------------
Le 23/11/2014 11:49, MichD a écrit :
Bonjour,
Ceci teste toutes les cellules contenant du texte dans les colonnes A et
B de ladite feuille.
On Error Resume next est là pour éviter qu'une erreur soit générée dans
le cas où tu n'as pas
au moins une cellule contenant du texte dans la colonne A et B.
Oui ce sont les côtés pénibles de .SpecialCells :
1/ les erreurs générées
2/ un comportement bizaroïde :
[A1].SpecialCells(xlCellTypeConstants)
renvoie la meme chose que :
[A1].Worksheet.UsedRange.SpecialCells(xlCellTypeConstants)
3/ Si le deuxième argument peut se sommer :
ex: [A1:B200].SpecialCells(xlCellTypeConstants, xlLogical+xlNumbers)
Il n'en est pas de même du premier argument :
[A1:B200].SpecialCells(xlCellTypeConstants + xlCellTypeFormulas)
ne fonctionne pas.
(c'est ce qui m'a conduit à réécrire SpecialCells en VBA, pour corriger
ces 3 anomalies)
Dans le cas de l'OP on pourrait faire plus simplement :
On Error Resume Next
Set Rng = Intersect([A2:B99999], _
[A2:B99999].SpecialCells(xlCellTypeConstants, xlTextValues))
If Not Rng Is Nothing Then For Each c In Rng.Cells ..... Next
Bon dimanche.
'-------------------------------------------------
Sub test()
Dim Rg As Range, C As Range, DerLig As Long
On Error Resume next
With Worksheets("Feuil1")
DerLig = .Range("A:B").Find("*", LookIn:=xlValues, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Set Rg = .Range("A1:B" & DerLig).SpecialCells(xlCellTypeConstants, 2)
End With
For Each C In Rg
' C.Value = Sans_accents$(c.Value)
Next
End Sub
'-------------------------------------------------
Ceci teste toutes les cellules contenant du texte dans les colonnes A et B de ladite feuille.
On Error Resume next est là pour éviter qu'une erreur soit générée dans le cas où tu n'as pas au moins une cellule contenant du texte dans la colonne A et B.
Oui ce sont les côtés pénibles de .SpecialCells : 1/ les erreurs générées 2/ un comportement bizaroïde : [A1].SpecialCells(xlCellTypeConstants) renvoie la meme chose que : [A1].Worksheet.UsedRange.SpecialCells(xlCellTypeConstants) 3/ Si le deuxième argument peut se sommer : ex: [A1:B200].SpecialCells(xlCellTypeConstants, xlLogical+xlNumbers) Il n'en est pas de même du premier argument : [A1:B200].SpecialCells(xlCellTypeConstants + xlCellTypeFormulas) ne fonctionne pas.
(c'est ce qui m'a conduit à réécrire SpecialCells en VBA, pour corriger ces 3 anomalies)
Dans le cas de l'OP on pourrait faire plus simplement : On Error Resume Next Set Rng = Intersect([A2:B99999], _ [A2:B99999].SpecialCells(xlCellTypeConstants, xlTextValues)) If Not Rng Is Nothing Then For Each c In Rng.Cells ..... Next
Bon dimanche.
'------------------------------------------------- Sub test() Dim Rg As Range, C As Range, DerLig As Long On Error Resume next With Worksheets("Feuil1") DerLig = .Range("A:B").Find("*", LookIn:=xlValues, _ SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row Set Rg = .Range("A1:B" & DerLig).SpecialCells(xlCellTypeConstants, 2) End With For Each C In Rg ' C.Value = Sans_accents$(c.Value) Next End Sub '-------------------------------------------------
Albert
Bonjour MichD
Est-il possible de remplacer "With Worksheets("Feuil1")" par With Active Worksheet ?
Pour le moment je dois changer le nom de feuille pour que ça marche, et le nom peut être différent à chaque fois.
Merci Albert
"MichD" a écrit dans le message de news:m4se5f$qna$
Bonjour,
Ceci teste toutes les cellules contenant du texte dans les colonnes A et B de ladite feuille.
On Error Resume next est là pour éviter qu'une erreur soit générée dans le cas où tu n'as pas au moins une cellule contenant du texte dans la colonne A et B.
'------------------------------------------------- Sub test() Dim Rg As Range, C As Range, DerLig As Long On Error Resume next With Worksheets("Feuil1") DerLig = .Range("A:B").Find("*", LookIn:=xlValues, _ SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row Set Rg = .Range("A1:B" & DerLig).SpecialCells(xlCellTypeConstants, 2) End With For Each C In Rg ' C.Value = Sans_accents$(c.Value) Next End Sub '-------------------------------------------------
Bonjour MichD
Est-il possible de remplacer "With Worksheets("Feuil1")" par With Active
Worksheet ?
Pour le moment je dois changer le nom de feuille pour que ça marche, et le
nom peut être différent à chaque fois.
Merci
Albert
"MichD" <michdenis@hotmail.com> a écrit dans le message de
news:m4se5f$qna$1@speranza.aioe.org...
Bonjour,
Ceci teste toutes les cellules contenant du texte dans les colonnes A et B
de ladite feuille.
On Error Resume next est là pour éviter qu'une erreur soit générée dans le
cas où tu n'as pas
au moins une cellule contenant du texte dans la colonne A et B.
'-------------------------------------------------
Sub test()
Dim Rg As Range, C As Range, DerLig As Long
On Error Resume next
With Worksheets("Feuil1")
DerLig = .Range("A:B").Find("*", LookIn:=xlValues, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Set Rg = .Range("A1:B" & DerLig).SpecialCells(xlCellTypeConstants, 2)
End With
For Each C In Rg
' C.Value = Sans_accents$(c.Value)
Next
End Sub
'-------------------------------------------------
Est-il possible de remplacer "With Worksheets("Feuil1")" par With Active Worksheet ?
Pour le moment je dois changer le nom de feuille pour que ça marche, et le nom peut être différent à chaque fois.
Merci Albert
"MichD" a écrit dans le message de news:m4se5f$qna$
Bonjour,
Ceci teste toutes les cellules contenant du texte dans les colonnes A et B de ladite feuille.
On Error Resume next est là pour éviter qu'une erreur soit générée dans le cas où tu n'as pas au moins une cellule contenant du texte dans la colonne A et B.
'------------------------------------------------- Sub test() Dim Rg As Range, C As Range, DerLig As Long On Error Resume next With Worksheets("Feuil1") DerLig = .Range("A:B").Find("*", LookIn:=xlValues, _ SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row Set Rg = .Range("A1:B" & DerLig).SpecialCells(xlCellTypeConstants, 2) End With For Each C In Rg ' C.Value = Sans_accents$(c.Value) Next End Sub '-------------------------------------------------
MichD
| Est-il possible de remplacer "With Worksheets("Feuil1")" par With Active
Ce ne cause pas de problème, cependant assure-toi que c'est vraiment la bonne feuille qui est active lorsque tu appelles la macro!
| Est-il possible de remplacer "With Worksheets("Feuil1")" par With Active
Ce ne cause pas de problème, cependant assure-toi que c'est vraiment la
bonne feuille qui est active lorsque tu appelles la macro!
Tout en espérant qu'il n'y aura pas trop d'erreurs sur ces listes.
Excel est un logiciel créateur d'erreurs ! (le FMI le sait bien...)
Jacquouille
J'aime ce côté positif qui ressort à chaque fois.
Jacquouille
" Le vin est au repas ce que le parfum est à la femme." "GL" a écrit dans le message de groupe de discussion : 54722112$0$2324$
Le 23/11/2014 18:57, Albert a écrit :
Merci à tous pour votre collaboration.
Tout en espérant qu'il n'y aura pas trop d'erreurs sur ces listes.
Excel est un logiciel créateur d'erreurs ! (le FMI le sait bien...)
--- Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active. http://www.avast.com
J'aime ce côté positif qui ressort à chaque fois.
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"GL" a écrit dans le message de groupe de discussion :
54722112$0$2324$426a74cc@news.free.fr...
Le 23/11/2014 18:57, Albert a écrit :
Merci à tous pour votre collaboration.
Tout en espérant qu'il n'y aura pas trop d'erreurs sur ces listes.
Excel est un logiciel créateur d'erreurs ! (le FMI le sait bien...)
---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com