Petit probléme..

Résolu
cs_reynald38 Messages postés 26 Date d'inscription mercredi 25 avril 2012 Statut Membre Dernière intervention 14 juin 2012 - 26 avril 2012 à 18:02
 Utilisateur anonyme - 27 avril 2012 à 02:07
Bonsoir à tous,

Voici mon problème :

Avec cette macro je voulais effectuer un changement de syntaxe dans une colonne entière ..

[1] = 7.000000e+02

1) suppression des espaces
2) changement "." en ","
3) suppression de [1] =
4) passage en mode standard des cellules

une fois ces changement effectués je me retrouve avec :

700

Le soucis c'est que cette modification est appliquée dans toute ma colonne MAIS .. je dis bien mais le chiffre 700 apparait partout alors que mes autres valeurs ne sont pas identiques..

[3] = 5.000000e+02

avec ma macro le chiffre 700 apparait alors que 500 devrait apparaitre..

Bizarre non?

je séche un peu la...

Ma macro


Set plage = Range("A1:A64") ' sélection de de la colonne A1 à A10


plage.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False ' Remplacement des "." en ","

Range("A1:A64").Value = Right(Range("A1").Value, _
Len(Range("A1").Value) - 4) ' supprimer les 4 premiers caractéres

plage.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False ' Supprimer les espaces


Range("A1:A64").Select
Selection.NumberFormat = "General" 'Mode standard pour les cellules

14 réponses

cs_gide_x Messages postés 37 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 20 mai 2016 1
26 avril 2012 à 21:28
Salut !

Alors je crois que je n'ai rien compris à ce que tu as dans tes cellules à l'origine, et à quoi tu veux arriver...

Dis-moi si je me trompe mais il me semble qu'il y a un doux mélange dans ton code...
Après le for each, le but est d'utiliser ta variable cellule et non range, non ?

Juste à voir, il ne devrait pas ressembler plutôt à quelque chose comme ça ?
Dim cellule As Range
For Each cellule In Range("a1:a64")

    cellule.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False ' Remplacement des "." en ","

    cellule.Value = Right(cellule.Text, Len(cellule.Text) - 4) ' supprimer les 4 premiers caractéres

    cellule.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False ' Supprimer les espaces

    cellule.NumberFormat = "General"

Next cellule



JD.
3
cs_gide_x Messages postés 37 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 20 mai 2016 1
26 avril 2012 à 21:40
P.S: la version de cmarotte fonctionne également (et est certainement plus rapide que la mienne), mais le problème réside ici:

cellule.Value = Right(cellule.Value, Len(cellule.Value) - 4)

essaye:
cellule.Value = Right(cellule.text, Len(cellule.text) - 4) 


.value récupère l'objet de ta cellule (dans le cas précis, un "double" je pense), et len ne fonctionne que sur un champs "string" !
.text récupère n'importe que cellule en "string" !

Voili, voilà.

JD.
3
Utilisateur anonyme
26 avril 2012 à 20:19
Bonjour,

Tu te bases toujours sur la valeur de A1 pour appliquer tes transformations.

Range("A1:A64").Value = Right(Range("A1").Value, _ 
Len(Range("A1").Value) - 4) ' supprimer les 4 premiers caractéres 


Il te faut une boucle qui va ressembler à cela. (Non testé)

dim cellule as range
for each cellule in range("a1:a64")
cellule.value = Right(cellule.Value, _ 
Len(cellule.Value - 4) ' supprimer les 4 premiers caractéres 
next cellule


Et puis, pourquoi ne pas juste changer le format des cellules ?
0
Utilisateur anonyme
26 avril 2012 à 20:21
Bonjour,

Et puis, pourquoi ne pas juste changer le format des cellules ?

OK, je me réveille... Les points au lieu des virgules.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_reynald38 Messages postés 26 Date d'inscription mercredi 25 avril 2012 Statut Membre Dernière intervention 14 juin 2012
26 avril 2012 à 20:34
J'ai suivit tes instruction mais cela ne marche pas :'(

Dim cellule As Range
For Each cellule In Range("a1:a64")



Set plage = Range.Value ' sélection de de la colonne A1 à A10


plage.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False ' Remplacement des "." en ","

Range.Value = Right(Range.Value, _
Len(Range.Value) - 4) ' supprimer les 4 premiers caractéres

plage.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False ' Supprimer les espaces


Range.Value
Selection.NumberFormat = "General"

Next cellule
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 avril 2012 à 20:37
Bonjour, cmarcotte,
je crois qu'il serait judicieux, dans un tel cas, de penser à utiliser la propriété Text (plutôt que Value) de la cellule
A toi.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_reynald38 Messages postés 26 Date d'inscription mercredi 25 avril 2012 Statut Membre Dernière intervention 14 juin 2012
26 avril 2012 à 20:48
La syntaxe Range("Ax").Select

n'exite pas ? ou un truc dans le même genre ? pour que j'utilise un X en compteur et incrementer le A de la cellule ?
0
Utilisateur anonyme
26 avril 2012 à 21:12
Bonjour,

La syntaxe Range("Ax").Select

Regarde dans l'aide à cells()

Pour ucfoutu

Oui, en effet

J'ai suivit tes instruction mais cela ne marche pas :'(

Pas vraiment. Tu étais supposé boucler seulement pour la transformation des nombres, pas pour ôter les points, ni les espaces.

Ta macro devrait finalement ressembler à cela (non-testé)

Set plage = Range("a1:a10")' sélection de de la colonne A1 à A10
plage.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False ' Remplacement des "." en ","
Dim cellule As Range
For Each cellule In plage
cellule.text= Right(cellule.text, _
Len(cellule.text) - 4) ' supprimer les 4 premiers caractéres
Next cellule
plage.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False ' Supprimer les espaces
plage.NumberFormat = "General"
0
cs_reynald38 Messages postés 26 Date d'inscription mercredi 25 avril 2012 Statut Membre Dernière intervention 14 juin 2012
26 avril 2012 à 21:28
Tu es sur que c'est du text ici? car j'ai un message d'erreur :o

cellule.Text = Right(cellule.Text, _
Len(cellule.Text) - 4) '
0
cs_reynald38 Messages postés 26 Date d'inscription mercredi 25 avril 2012 Statut Membre Dernière intervention 14 juin 2012
26 avril 2012 à 21:30
Argument ou appel de procédure incorrect

je suis désolé d'insister comme cela mais je découvre le VBA et j'ai fais 10.00000 sites avant de venir ici .. misére
0
cs_gide_x Messages postés 37 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 20 mai 2016 1
26 avril 2012 à 21:34
euhh... alors là, n'étant pas du tout pro du VBA je m'avance peut-être, mais il me semble que dans Excel, le .text d'une cellule est readonly (et permet de récupérer une cellule tel qu'a l'affichage) ... mais .value est en readwrite.

JD.
0
cs_reynald38 Messages postés 26 Date d'inscription mercredi 25 avril 2012 Statut Membre Dernière intervention 14 juin 2012
26 avril 2012 à 21:35
Salut Gid_x !

ta macro est bonne et fonctionne mais j'ai toujours le message d'erreur : Argument ou appel de procédure incorrect

pour cellule.Value = Right(cellule.Value, Len(cellule.Value) - 4) ' supprimer les 4 premiers caractéres
0
cs_reynald38 Messages postés 26 Date d'inscription mercredi 25 avril 2012 Statut Membre Dernière intervention 14 juin 2012
26 avril 2012 à 21:38
Bon c'est good j'ai juste remplacé le .text des guillemet en .value ^^"

Merci à vous pour l'aide !

super ce site pour les noobz ^^
0
Utilisateur anonyme
27 avril 2012 à 02:07
Bonjour,

cellule.Value = Right(cellule.Value, Len(cellule.Value) - 4)

Es-tu sur que tu n'as aucune cellule où len(cellule.value)-4 ne finit pas par donner zéro ou -quelque chose ?
0
Rejoignez-nous