Résolu Selection d'une plage de cellule dans une macro

Bocsaium

Nouveau membre
Bonjour a toutes et a tous
j'utilise de nombreuse référence de produit que je met dans une liste sur excel
Pour être plus clair je vous donne un exemple ci dessous
Dans une cellule je tape la référence suivante : 02024501ZZ00
En validant ma saisie je souhaite cette mise en forme :02.0245.01.ZZ.00
tout en sachant que les deux lettres ZZ ne sont pas figés que je peut mettre d'autre
lettres mais pas plus de deux lettres
On ma proposer de faire une macro
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address <> "$B$5" Then Exit Sub
If Len([B5]) <> 12 Then Exit Sub
Dim chn As String: chn = [B5]
[B5] = Left$(chn, 2) & "." & Mid$(chn, 3, 4) & "." _
& Mid$(chn, 7, 2) & "." & Mid$(chn, 9, 2) & "." & Right$(chn, 2)
End Sub
Elle fonctionne bien mais pour UNE seule cellule le but est de mettre en forme une plage de cellule
merci beaucoup par avance pour votre aide
bien cordialement
Pascal
 

magellan

Modérâleur
Staff
c'est via la fonction range que tu vas appliquer la formule sur toutes les cellules d'une colonne. Cherche de ce côté :)
 

drul

Obscur pro du hardware
Staff
Salut,
Premère question: pourquoi SelectionChange et pas Change ?
Comment est définit ta plage de cellule ?
Je ne comprends pas exactement ce que tu cherches à faire ...
Tu désires appliquer la macro à chaque fois que l'utilisateur saisit un nombre ? ou traiter toute la zone en une fois, à l'aide par exemple d'un bouton ?

Jette un oeil ici, la problématique me semble similaire:
https://forum.tomshardware.fr/threads/je-gal%C3%A8re-de-ouf-sur-un-if-aidez-moi-svp.893368/
 

Bocsaium

Nouveau membre
Bonjour
En fait j'utilise une plage de cellules exemple:
colonne A , cellule A1:A 10 dans lesquelles je rentre ma liste de reference sous cette forme : 02045002ZZ02
le but avec la macro est que des que je tape la reference : 02045502ZZ02 elle devienne :02.0455.02.ZZ.02
Avec la macro de mon premier message cela ne s'applique que a une cellule et je souhaiterais sélectionner
une plage de cellules sur une colonne et que dès j'ajoute une nouvelle reference elle se mette a la forme désiré
pour info toutes mes references ont le même nombre de chiffres et de lettres (les lettres sont toujours a la même position que mon
exemple mais ne sont pas toujours identiques )
En espérant avoir été assez clair dans mes explications
bien cordialement
Pascal
 

drul

Obscur pro du hardware
Staff
Meilleure réponse
je souhaiterais sélectionner
une plage de cellules sur une colonne et que dès j'ajoute une nouvelle reference elle se mette a la forme désiré

C'est contradictoire là. La première partie de la pharase me fait comprendre:
- Je saisie une liste de référence, je les sélectionne et j'applique la macro

La deuxième partie:
- Je rente une nouvelle référence et pas, elle se met en forme toute seule

J'imagine que c'est la 2 qui est la bonne.
Connais-tu la plage/colonne dans laquelle tu entre tes données ?

Mais je verrais bien un truc comme ça:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ACell As Range
Dim chn As String
    For Each ACell In Target.Cells
        If ACell.Value Like "########[a-z;A-Z][a-z;A-Z]##" Then
            chn = ACell.Value
            ACell.Value = Left$(chn, 2) & "." & Mid$(chn, 3, 4) & "." _
            & Mid$(chn, 7, 2) & "." & Mid$(chn, 9, 2) & "." & Right$(chn, 2)

        End If
    Next
End Sub
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 079
Membres
1 586 395
Dernier membre
franckorus
Partager cette page
Haut