Cherche une Macro excel : casse tete

benny -  
 Manugeo -
Bonjour,

Mon problème est le suivant. J'ai un fichier excel dont les données se presentent de la manière suivante:

009 00
10
11
12
007 12
23
24
35
87

Et voici comment je voudrais que les donnees soient presentées:

000900
000910
000911
000912
000913
000712
000723
000724
000735
000787

Il faudrait également supprimer systematiquement l'espace 009 00 => 00900=> et rajouter systematiquement un 0 devant
=>000900

Merci d'avance mes amis.

Cordialement,
Configuration: Windows XP Internet Explorer 6.0

1 réponse

  1. Manugeo
     
    Bonjour Benny,

    Pour ton casse-tête, voici une solution qui consiste à :
    - parcourir tes cellules (en colonne)
    - Mesurer le nombe de caractères,
    - Si le nombre de caractères est sup à 3, on retient les 3 premiers, puis on met en forme la cellule
    - Si le nombre est inf ou égal à trois, on met les caractères retenus, puis la suite mise en forme.

    Attention : pour que ça marche, la première cellule visitée doit être de type 009 00, ou 009 12...

    En code, ça donne ça :

    Private Sub CommandButton1_Click()

    Dim Adr As String
    Dim EnTête As String
    Dim It As Long

    For It = 1 To 10000 '(Mettre à la place de 10000 le nombre de lignes à mettre en forme)
    Adr = "A" & It '(Mettre à la place de A la colonne à mettre en forme)
    Select Case Len(Range(Adr).Value)
    Case 0
    Exit For 'sort de la procédure si rencontre une cellule vide
    Case Is > 3
    EnTête = Left(Range(Adr).Value, 3) 'retient l'en-tête
    End Select
    Range(Adr).Value = "'0" & EnTête & Right(Range(Adr).Value, 2)

    Next It

    End Sub

    Pas trop casse-tête, non ?
    0