Rechercher : dans
Par :

[VB/VBA/VBScript] SUPPRESSION DES ZEROS A GAUCHE

Dernière réponse le 26 aoû 2006 à 01:44:21 GUYSYS, le 25 oct 2005 à 01:43:48 
 Signaler ce message aux modérateurs

Bonjour,

Je bute sur ce petit problème de langage :
Comment faire pour que dans des cellules excel sélectionnées suivantes

00702A DEVIENNE 702A
000152B DEVIENNE 152B

je vous joins ci-dessous la procédure dans laquelle je souhaiterais remplacer le msgbox par une formule effaçant le zéro . du style

If Left(celltest, 1) = 0 Then Left(celltest, 1) =null
mais celà ne fonctionne pas .

merci de votre aide


Sub SUPPRIMEROAGAUCHE()

Dim zoneatester As String
zoneatester = ActiveWindow.RangeSelection.Address
If zoneatester = Null Then
MsgBox "select zone", vbInformation, "CHOISIR"

Else
Dim celltest As Range
For Each celltest In Range(zoneatester)

If Left(celltest, 1) = 0 Then MsgBox Left(celltest, 1), vbInformation, "VALEUR GAUCHE " Else MsgBox Left(celltest, 1), vbInformation, "VALEUR GAUCHE "
Next
End If
End Sub

Meilleures réponses pour « [VB/VBA/VBScript] SUPPRESSION DES ZEROS A GAUCHE » dans :
[VBA] Supprimer un mot dans une plage de cellule VoirSi on veut supprimer un mot dans une phrase il suffit de faire une petite macro qui supprime le mot recherché. Là où ça se corse c'est que le mot recherché pourrait être, par exemple "LEMOT" ou "LeMot" ou "lemot" ou encore "LeMot" etc.. Cette...
[Windows 2000] Affichage Ajout/suppression de programmes VoirUn beau jour, vous voulez désinstaller un programme mais la fenêtre Ajout/suppression de programmes n'affiche que du blanc et vous avez un message d'erreur du genre : Une erreur inattendue s'est produite Cet objet ne gère pas cette propriété ou...
VBA et les collections d'objets. VoirVBA et les collections d'objets Quand plusieurs (beaucoup de) contrôles sont mis sur une feuille ou un Userform il est parfois fastidieux d'écrire du code dans chaque évènement des contrôles. Ce Tuto vous permet de traiter vos contrôles comme...
Introduction à VBScript VoirPrésentation de VB Script VBScript (aussi appelé Visual Basic Scripting Edition) est un sous-ensemble du langage Visual Basic for Applications (VBA), un langage propriétaire de Microsoft prévu pour être intégré aux produits Microsoft Office©,...
VBScript - Les fonctions de date et de temps VoirLes fonctions de date et de temps Fonction Description Date Retourne la date du système DateAdd(interval, number, date) Ajoute un intervalle de temps (interval) à une...
VBScript - Les opérateurs VoirQu'est-ce qu'un opérateur? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs de...

1

teebo, le 25 oct 2005 à 08:46:06

Salut,
Je ne connais pas bien VBA mais je dirai deux choses qui peuvent aider:

1: Le test, tu devrais peut être mettre "0" ou '0' à la place de 0.
2:Plutôt que de faire Left()=null (tu ne peux pas affecter une valeur au résultat d'une fonction), tu dois faire

celltest=Right(celltest, celltest.length-1)


Ensuite il te faut une boucle while aussi pour virer TOUS les 0 et pas seulement le premier...

Always forgive your enemies
Nothing annoys them so much.
(Oscar Wilde)

Répondre à teebo

9

GUYSYS, le 25 oct 2005 à 23:15:12
  • +1

Merci pour ton aide,

Tout d'abord , le fait de mette 0 ou "0" n'a pas d'importance après essai de la macro.

Pour le reste la syntaxe que je cherchais pour supprimer le (les) premiers zéro à gauche est effectivement
celltest=Right(celltest, celltest.length-1) , que je fais suivre comme tu me le conseille par " une boucle while aussi pour virer TOUS les 0 et pas seulement le premier..."

J'ai utilisé la boucle proposé par RANDOM en remplaçant la variable tempo par celltest et le tout fonctionne à mon entière satisfaction.

MERCI A TOUS LES DEUX ET A TOUS CEUX QUI ONT PRIS LA PEINE DE M'AIDER.
***************************************
POUR CEUX QUI SONT INTERESSES VOILA LE CODE FINAL POUR SUPPRIMER LES ZERO A GAUCHE D'UNE CHAINE DE CARACTERES DANS UNE ZONE DE CELLULES EXCEL SELECTIONNEES A LA SOURIS
*********************************************
Sub SUPPRIMERODEVANTCOMPTE()

Dim zoneatester As String
zoneatester = ActiveWindow.RangeSelection.Address

Dim celltest As Range

For Each celltest In Range(zoneatester)
Do While Left(celltest, 1) = 0
celltest = Right(celltest, Len(celltest) - 1)
Loop

Next

End Sub

*****************************************
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi .
(A. EINSTEIN)
*****************************************************

Répondre à GUYSYS

2

random, le 25 oct 2005 à 08:48:32

Function szr(x As String) As String
Dim tempo As String
tempo = x
Do While Left(tempo, 1) = "0"
tempo = Right(tempo, Len(tempo) - 1)
Loop
szr = tempo elle est pas belle, la vie ?

Répondre à random

3

teebo, le 25 oct 2005 à 08:53:16

Prems,...mais je connais pas la syntaxe de Len() :)
Always forgive your enemies
Nothing annoys them so much.

(Oscar Wilde)

Répondre à teebo

4

random, le 25 oct 2005 à 09:52:42

Len(une chaîne) renvoie la longueur de la chaîne elle est pas belle, la vie ?

Répondre à random

5

teebo, le 25 oct 2005 à 09:54:07

Je te crois :) Je ne fais jamais de VBA :)
Always forgive your enemies
Nothing annoys them so much.

(Oscar Wilde)

Répondre à teebo

6

random, le 25 oct 2005 à 10:33:54

C'est un langage comme un autre
il présente l'immense avantage d'être parfaitement connecté
à excel word access power point et outlook
ce qui en fait pour la bureautique un outil de premier ordre
elle est pas belle, la vie ?

Répondre à random

7

teebo, le 25 oct 2005 à 10:46:41

c'est un langage comme un autre
Ouais enfin c'est pas un des meilleurs non plus...

il présente l'immense avantage d'être parfaitement connecté
à excel word access power point et outlook

C'est vrai...
ce qui en fait pour la bureautique un outil de premier ordre

C'est vrai aussi...mais je ne fait pas non plus de bureautique ;-D

Always forgive your enemies
Nothing annoys them so much.

(Oscar Wilde)

Répondre à teebo

8

random, le 25 oct 2005 à 11:02:34

Si tu ne fais pas de bureautique il n'y a pas de raison
de s'y intérésser particulièrement
si ce n'est qu'il est fourni gratuitement avec word
comme de très nombreuses configurations sont
fournies avec word
de plus si le langage n'est pas le meilleur
il est parfaitement documenté et inclue des bibliothèques étendus
elle est pas belle, la vie ?

Répondre à random

10

Lisa, le 11 aoû 2006 à 09:37:32

Bonjour,

est-ce que cette solution est applicable au problème suivant ? Sinon que me conseillez vous?

Sous ACCESS, je dois lier 2 tables qui ont un champ commun, sauf que dans une table le champ a deux zéros en + devant (ex : 25635 et 0025635, 25636 et 0025636).

Ces deux tables sont importées vers ACCESS mensuellement, et je voudrais à chaque import traiter automatiquement la table à deux zéros pour les enlever.

OU ALORS, faire que les champs se reconnaissent meme si l'un garde ses deux zéros.

Merci!!
Lisa

Répondre à Lisa

11

 GUYSYS, le 26 aoû 2006 à 01:44:21

Bonjour,

Peut-être peux-tu importer le champ concerné en format numérique, cela supprimera les zéros à gauche (attention tous les zéros à gauche...)

*****************************************
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi .
(A. EINSTEIN)
*****************************************************

Répondre à GUYSYS
Collection CommentÇaMarche.net