IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Suppression dernier caractère dans une plage de cellules [XL-2003]


Sujet :

Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Suppression dernier caractère dans une plage de cellules
    Bonjour à tous,

    Je bute actuellement sur un point qui sera sans doute simple pour la plupart d'entre-vous !

    Comme vous pouvez le voir ci-dessous, ces données importées dans Excel 2003 depuis un outil d'analyse de compteurs (OWL), comportent des virgules à la fin de chaque valeur (sauf date & heure).

    J'ai testé la macro ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub SupprCaractD()
    ''Macros par Claude Dubois pour "rimbaut" E-P le 21 Oct 09
    Dim Nc, Cel As Range
        For Each Cel In Range(("e2:e24581"), ("f2:f24581"))
            Cel.Value = Trim(Cel.Value) 'supprime espaces
            Nc = Len(Cel)               'compte les caractères
            Cel.Value = Left(Cel, Nc - 1)
        Next Cel
        MsgBox "Terminé !"
    End Sub
    Celle-ci ne fonctionne que sur les colonnes 3 et 4. Etant donné, que le fichier comporte plus de 25 000 lignes, quelqu'un pourrait-il m'aider à modifier cette macro de telle
    sorte que la plage entière soit prise en compte (E2:J25481) ?

    En vous remerciant et en vous souhaitant un excellent week-end.

    Cordialement,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Date		Heure       GHG_	Tariff	Amps        kW_Raw   	                Cost_Raw	                GHG_Raw
    19/11/2013	10:21	0,84	2,5,	                226,8,	                56700,0,	                19051,2,
    19/11/2013	10:22	0,84	2,5,	0,212333,	84,933333,	21233,33325,	7134,399972,
    19/11/2013	10:23	0,84	2,5,	0,252,	100,8,	                25200,0,	                8467,2,
    19/11/2013	10:24	0,84	2,5,	0,701167,	280,466667,	70116,66675,	23559,200028,
    19/11/2013	10:25	0,84	2,5,	0,236833,	94,733333,	23683,33325,	7957,599972,
    19/11/2013	10:26	0,84	2,5,	0,236833,	94,733333,	23683,33325,	7957,599972,
    19/11/2013	10:27	0,84	2,5,	0,130667,	52,266667,	13066,66675,	4390,400028,
    19/11/2013	10:28	0,84	2,5,	0,401333,	160,533333,	40133,33325,	13484,799972,
    19/11/2013	10:29	0,84	2,5,	0,130667,	52,266667,	13066,66675,	4390,400028,

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Remplace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Cel In Range(("e2:e24581"), ("f2:f24581"))
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Cel In Range("E2:J24581")

  3. #3
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Merci
    Citation Envoyé par Daniel.C Voir le message
    Bonjour,

    Remplace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Cel In Range(("e2:e24581"), ("f2:f24581"))
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Cel In Range("E2:J24581")
    Merci beaucoup Daniel.
    Je vais tester ta solution dès vendredi matin au bureau et te tiens informé.

    Excellente Soirée,

    Cdt

    Xavier

  4. #4
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Daniel.C Voir le message
    Bonjour,

    Remplace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Cel In Range(("e2:e24581"), ("f2:f24581"))
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Cel In Range("E2:J24581")
    Bonjour Daniel,

    Comme convenu le retour après application de ta solution. Cela fonctionne mais je suis confronté à un autre problème.

    Le format de certaines cellules n'est pas celui que j'espérais c'est à dire que j'ai par exemple 7 134 399 972 alors que je devrais avoir 7134,399972.

    Cette macro ne conserve malheureusement pas la 1ère virgule et de plus insère un séparateur de milliers. Je suppose que les lignes suivantes du code (cf ci-dessous) ne sont pas adaptées mais je ne vois pas comment les modifier.

    Je continue donc à chercher et merci encore pour ton aide.

    Bonne journée

    Xavier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Cel.Value = Trim(Cel.Value) 'supprime espaces
            Nc = Len(Cel)               'compte les caractères
            Cel.Value = Left(Cel, Nc - 1)

  5. #5
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,

    25000 lignes !!!, passes par un tableau virtuel, testes ce code que je n'ai pas le temps de vérifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub SupprCaractD()
    Dim Nc, x As Long, y As Long, Tbl
    Tbl = Range("e2:j24581")
    For x = 1 To UBound(Tbl, 1)
      For y = 1 To UBound(Tbl, 2)
        Nc = Len(Tbl(x, y))
        Tbl(x, y) = Val(Replace(Left(Tbl(x, y), Nc - 1), ",", "."))
      Next y
    Next x
    Range("E2").Resize(UBound(Tbl, 1), UBound(Tbl, 2)) = Tbl
    MsgBox "Terminé !"
    End Sub

  6. #6
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par casefayere Voir le message
    Bonjour,

    25000 lignes !!!, passes par un tableau virtuel, testes ce code que je n'ai pas le temps de vérifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub SupprCaractD()
    Dim Nc, x As Long, y As Long, Tbl
    Tbl = Range("e2:j24581")
    For x = 1 To UBound(Tbl, 1)
      For y = 1 To UBound(Tbl, 2)
        Nc = Len(Tbl(x, y))
        Tbl(x, y) = Val(Replace(Left(Tbl(x, y), Nc - 1), ",", "."))
      Next y
    Next x
    Range("E2").Resize(UBound(Tbl, 1), UBound(Tbl, 2)) = Tbl
    MsgBox "Terminé !"
    End Sub
    Bonjour Dom,

    Désolé pour la réponse tardive mais j'ai pu tester ton code. Cela fonctionne sans problème.

    Il me reste à voir le format de certains champs qui sont en format 'Texte'. Il faut que je les transforme en format 'Nombre' avant de relancer la macro.

    Merci à toi ainsi qu'à Daniel pour votre aide précieuse et on peut donc considérer mon problème comme résolu.

    Au plaisir de vous retrouver sur ce forum !

    Bon WE et bonne continuation

    Xavier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2002] Suppression de caractères dans une cellule en conservant la mise en forme
    Par stef_PBR dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/06/2009, 18h25
  2. Réponses: 1
    Dernier message: 12/04/2007, 16h54
  3. [Excel] Nombre de caractères dans une plage
    Par fred014 dans le forum Delphi
    Réponses: 20
    Dernier message: 02/03/2007, 21h32
  4. Pb de lecture données dans une plage de cellule avec itération
    Par rond24 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/07/2006, 13h33
  5. Remplacer "#N/A" dans une plage de cellule.
    Par Yogi_01 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 12/04/2006, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo