Probleme Filtre

  • Initiateur de la discussion Valérie
  • Date de début
V

Valérie

Guest
BOnjour a tous.

Jai réussis a trouver ce forum qui m'aidera je l'esperes/

Jai un très gros fichiers Excel où il y a des filtres qui a été creé sur Excel 2000. Notre service Informatique nous a fait migrer en 2003.

pas de soucis sauf que...

:evil:

Jai plusieurs ligne comprenant le nom des articles qui commencent par un Espacement et d'autre non.

Quand je veux filtrer les lignes commençant par 'espacement' cela ne fonctionne plus. Excel ne reconaissant pas l'espacement comme un caractere.

Pourtant cela fonctionne très bien sur 2000.

Pourrais-je avoir un peu d'aide ? car cest une tache que je fais tout les jours et sans la possibilité de trier les articles commençant par 'espacement' et les autre je vais vraiment avoir du mal..

MERci a vous.
 

Davidc57

XLDnaute Occasionnel
Bonjour Valérie,

Effectivement, je viens de constater ce problème. C'est étrange !!

Peux-tu contourner ce problème en enlevant les espaces par exemple en remplacement les espaces par des _ (enfin seulement les espaces qui sont en première position.

Ensuite j'ai vérifier que le filtre personnalisé fonctionne bien, et pas de problème de ce coté.

On peut faire ca en automatique, si tu as vraiment beaucoup de lignes.

Si cette solution te convient et que tu as besoins d'aide pour faire les remplacements, envoi un fichier en pièce jointe et je pourrais te le faire.

A bientôt,
David
 
V

valérie

Guest
Le fichier est très gros et comporte une multitude de ligne..

Cest un fichier du boulot et il est donc confidentiel.

S'il n'existe aucun moyen de faire reconnaitre la barre d'espace comme un caratere je vais devoir y mettre un autre caratere comme tu me l'a dis/ .. ça risque detre long..

MErci pour ton aide en tout cas :)
 

Davidc57

XLDnaute Occasionnel
Rebonjour Valérie,


NON NON NON !!! Pas à la main, je t'envoi un exemple avec des formules excel pour mettre un '_' à la place du premier ' '. Applique ces formules sur ton fichier au boulot et ca devrait bien se passer


Quand tu as obtenu, ta nouvelle colonne avec les '_' au lieu des espaces ... fais un copier coller / Valeurs de ta nouvelle colonne et supprime les colonnes intermédiaires.


A+ et bon courage.
David [file name=Book1_20060501120049.zip size=4725]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Book1_20060501120049.zip[/file]
 

Pièces jointes

  • Book1_20060501120049.zip
    4.6 KB · Affichages: 24
V

Val

Guest
très gentil a toi :kiss:

Par contre je suis obligé de reproduire les colones Test et Longueur du mot ?

parceque mon fichier comporte plusieurs colones ce qui Exclut l'insertion de nouvelles colones..

tout ça m'a l'air bien complique je vais leur demander de me réinstaller Office 2000 :silly:

merci pour ton aide . :)
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Valérie, David, le Forum

N'ayant pas plus d'information, je suppose que ces espaces en Début d'Enregistrement proviennent d'un import de données d'un autre Logiciel.

En fait souvent ces espaces 'parasites' sont toujours un souci, et on ne cherche pas à les remplacer par un autre caractère, on les supprime tout simplement.

Donc voici une Function 'Ltrim' prévue pour ceci :


Sub SuppressSpace()
Dim ColRange As Variant
Dim Col As Integer
Dim L As Long

Col = ActiveCell.Column

ColRange = Range(Cells(1, Col), Cells(65536, Col).End(xlUp))

   
For L = 1 To UBound(ColRange, 1)
        ColRange(L, 1) = LTrim(ColRange(L, 1))
   
Next

Range(Cells(1, Col), Cells(65536, Col).End(xlUp)) = ColRange


End Sub


Ne connaissant pas les Dimensions de ton Tableau, pour l'instant il te suffit de te placer en Cellule Active dans la Colonne voulue et de lancer cette Macro.

Bon Premier Mai


[ol]@+Thierry[/ol]

EDITION !!!
PS Non non il vaut mieux rester en 2003 !!!

Message édité par: _Thierry, à: 01/05/2006 12:19
 

Davidc57

XLDnaute Occasionnel
Valérie,

Tu n'es pas obligé d'insérer des colonnes, tu peux utiliser celles qui sont libres à droite, ou bien copier coller ta colonne avec les 'espaces' dans un autres fichiers, pour faire les formules et ensuite recopier / coller les résultats dans ton fichier. Bref, on peut toujours s'adapter...

Salut Thierry,

J'avais pensé à cette fonction, cependant comme elle a besoin de faire un filtre sur les cellules qui commencent par un espace, en les enlevant, elle ne saurait plus les reconnaître. Donc il lui faut garder un flag, un souligné par exemple ..

A+
David
 
V

Valérie

Guest
Vous m'avez l'air bien calé en tout cas =

je crois que je vais faire remplacement de l'espace par un autre caractere..

moi ce qui me trouble cest que ça marchait très bien sur 2000 :)

et que quand je filtrais mes articles, d'un coup je pouvais traiter les articles commençant par 'espacement' (qui proviennent d'une boutique) et ensuie je pouvais m'occuper des autre articles sans espace (qui proviennent d'une autre boutique)..

ça me permettait de bien identifier les articles.. et le filtre gérait parfaitement bien l'espace..

merci en tout cas pour votre aide cest très gentil a vous. :)
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonjour Valérie, David, le Forum

Ah oui ça ne m'avait pas percuté, en effet le remplacement est donc indispensable...

Mais qu'à celà ne tienne ;)


Sub RemplaceSpaceByUnderScore()
Dim ColRange As Variant
Dim Col As Integer
Dim L As Long

Col = ActiveCell.Column

ColRange = Range(Cells(1, Col), Cells(65536, Col).End(xlUp))

   
For L = 1 To UBound(ColRange, 1)
       
If Left(ColRange(L, 1), 1) = Chr(32) Then
        ColRange(L, 1) = Chr(95) & Right(ColRange(L, 1), Len(ColRange(L, 1)) - 1)
       
End If
   
Next

Range(Cells(1, Col), Cells(65536, Col).End(xlUp)) = ColRange


End Sub

Bon Premier Mai (Again ;) )


@+Thierry
 

Davidc57

XLDnaute Occasionnel
Re Valerie, Re Thierry,

Excellente macro Thierry,

Ca devrait aider Valerie si elle ne veut pas insérer de colonnes etc ...

Cela dit, j'ai un souci chez moi avec UBOUND (que je connaissais pas d'ailleurs), une erreur 13 (type mismatch).

Enfin en remplacant par

For each L in colRange, ca fonctionne bien !!!

Mais que se passe t-il ??

Enfin, c'est pas grave, l'essentiel c'est que Valérie dispose maintenant de plusieurs solutions pour résoudre son problème.

J'voulais aller au muguet, mais il pleut ... mince alors.

A+
DAvid
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir David, Marc, Valérie

David pour ceci :
j'ai un souci chez moi avec UBOUND (que je connaissais pas d'ailleurs), une erreur 13
(type mismatch).


C'est clair, tu n'as pas recopié les déclaration de Variables comme il faut.

Pour que ça passe avec :

For each L in colRange, ca fonctionne bien !!!

C'est que tu as implicitement déclaré colRange 'As Range' et pas 'As Variant' comme j'avais préparé, de plus tu as du faire un 'Set' de création d'Objet.

Dans mon Code :

Dim ColRange As Variant
ColRange = Range(Cells(1, Col), Cells(65536, Col).End(xlUp))

Signifie que je crée un Tableau (une Array) bien plus rapide à lire dans le cas des gros tableaux de Valérie, qu'un parcours de Cells d'un Objet Range.

Par contre ce Type d'Array est toujours Variant.

La Function Ubound renvoie la valeur du plus grand indice disponible pour la dimension indiquée du tableau. (indispensable quand on jongle avec les Tableaux indexés séquentiellement)

L'inverse sera Lbound....

Bonne Soirée
[ol]@+Thierry[/ol]
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote