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é
 
Inscription : juin 2008
Messages : 682
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2008
Messages : 682
Points : 661
Points : 661
Par défaut Caractère * ne représentant pas une chaîne quelconque

Bonjour à tous,

Code :
1
2
3
4
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é à 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 00
Vieux 01/07/2009, 12h04   #2
Expert Confirmé Sénior

 
Avatar de cafeine
 
Inscription : juin 2002
Messages : 3 880
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 3 880
Points : 4 489
Points : 4 489
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 00
Vieux 01/07/2009, 12h10   #3
Membre chevronné
 
Inscription : juin 2008
Messages : 682
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2008
Messages : 682
Points : 661
Points : 661
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 00
Vieux 01/07/2009, 12h15   #4
Membre Expert
 
Avatar de Fvandermeulen
 
Frédéric Vandermeulen
Inscription : juillet 2007
Messages : 1 716
Détails du profil
Informations personnelles :
Nom : Frédéric Vandermeulen
Âge : 36
Localisation : Belgique

Informations forums :
Inscription : juillet 2007
Messages : 1 716
Points : 2 108
Points : 2 108
Salut,
Je crois tenir une alternative...dépendra de tes données effectives...

Code :
1
2
3
4
5
6
7
8
9
10
11
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 00
Vieux 01/07/2009, 12h24   #5
Membre Expert
 
Homme Frédéric
Développeur informatique
Inscription : juin 2009
Messages : 944
Détails du profil
Informations personnelles :
Nom : Homme Frédéric
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2009
Messages : 944
Points : 1 249
Points : 1 249
Bonjour
J'essayerai bien un truc comme ça :

Code :
1
2
3
4
5
6
    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 00
Vieux 01/07/2009, 12h52   #6
Membre confirmé
 
Inscription : octobre 2007
Messages : 232
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 232
Points : 235
Points : 235
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 00
Vieux 01/07/2009, 13h44   #7
Membre chevronné
 
Inscription : juin 2008
Messages : 682
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2008
Messages : 682
Points : 661
Points : 661
Merci à tous !

Les solutions de Fvandermeulen et de mapeh fonctionnent bien !
__________________
DeaD
DeaD78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 19h31.


 
 
 
 
Partenaires

Hébergement Web