Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 01/07/2009, 11h35   #1
Membre chevronné
 
Date d'inscription: juin 2008
Localisation: Pas loin de Versailles !
Âge: 24
Messages: 617
Par défaut Caractère * ne représentant pas une chaîne quelconque

Bonjour à tous,

Code :
Range("A1:T1").Select
    Selection.Replace What:="*1.000", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
J'effectue un replace de cette façon. Mon but est d'effacer la chaîne *1.000 lorsqu'elle se présente. Cependant, avec ce bout de code, on efface la chaîne 1.000 lorsqu'elle est trouvée peu importe ce qu'il peut y avoir avant (et ce qu'il y a avant est aussi effacé).

Bref, c'est le cas classique du caractère * représentant une chaîne de caractères quelconque.

Ma question est donc la suivante : comment écrire * pour que cela ne représente pas une chaîne de caractères quelconque mais bien le caractère * ?

J'avais pensé à
Code :
Chr(42) & "1.000"
mais le résultat est le même que dans le cas précédent (d'ailleurs, je ne suis même pas sûr que 42 soit le bon code pour le caractère *).

Terminons par un petit exemple au cas où je n'ai pas été assez clair. Pour le moment, dans une de mes cellules j'ai 71.0004 et *1000 dans un autre. Dans l'état actuel des choses, je me retrouve, après le lancement de la macro, avec 4 et une cellule vide. Je voudrais donc avoir 71.0004 (aucune modification car pas de chaîne *1.000) et une cellule vide.

Merci d'avance
__________________
DeaD
DeaD78 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/07/2009, 12h04   #2
Rédacteur/Modérateur

 
Avatar de cafeine
 
Date d'inscription: juin 2002
Localisation: derrière le moniteur
Messages: 3 874
Par défaut

Hello,

essaie de doubler le * exemple "**1.000"
__________________
Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème

Développez une application de gestion des comptes bancaires dans Access de A à Z
Déjà 12 tutoriels, le dernier en date : Comment faire un TextBox auto-extensible dans un formulaire ?


cafeine est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/07/2009, 12h10   #3
Membre chevronné
 
Date d'inscription: juin 2008
Localisation: Pas loin de Versailles !
Âge: 24
Messages: 617
Par défaut

Salut cafeine,

Je viens de tester à l'instant et cela ne change rien
__________________
DeaD
DeaD78 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/07/2009, 12h15   #4
Membre Expert
 
Avatar de Fvandermeulen
 
Nom : Frédéric Vandermeulen
Date d'inscription: juillet 2007
Localisation: Bruxelles
Âge: 34
Messages: 1 414
Par défaut

Salut,
Je crois tenir une alternative...dépendra de tes données effectives...

Code :
Sub testRemplace()
 
Dim cel As Range, Plage As Range
 
Set Plage = Sheets("sheet2").Range("A1:T1")
 
Plage.Select
    For Each cel In Plage
        If Left(cel.Value, 1) = "*" Then cel.Replace What:="*1.000", Replacement:=""
    Next
End Sub
Sinon, j'imagine que ton "1.000" est stocké en format texte alors qu'il devrait être en nombre, ça pourrait être une autre piste.

A+
__________________
N'oubliez pas le si votre problème est solutionné.
Fvandermeulen est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/07/2009, 12h24   #5
Membre émérite
 
Date d'inscription: juin 2009
Localisation: Lorraine
Messages: 842
Envoyer un message via MSN à fgiambelluco
Par défaut

Bonjour
J'essayerai bien un truc comme ça :

Code :
    Range("A1:T1").Select
    For Each MaCel In Selection.Cells
        If MaCel.Value="*1.000" then
            MaCel.Value=""
        End If
    Next
--------------
Frédéric
http://www.access-developpement.com

Dernière modification par AlainTech ; 05/07/2009 à 07h08. Motif: Balises [code]
fgiambelluco est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/07/2009, 12h52   #6
Membre actif
 
Date d'inscription: octobre 2007
Localisation: 29
Messages: 176
Par défaut

Bonjour,

essaie avec cette syntaxe :

Code :
Range("A1:T1").Replace What:="~*1.000", Replacement:="", LookAt:=xlPart
mapeh est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/07/2009, 13h44   #7
Membre chevronné
 
Date d'inscription: juin 2008
Localisation: Pas loin de Versailles !
Âge: 24
Messages: 617
Par défaut

Merci à tous !

Les solutions de Fvandermeulen et de mapeh fonctionnent bien !
__________________
DeaD
DeaD78 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 08h40.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.