Se connecter / S'enregistrer
Votre question
Résolu

Selection d'une plage de cellule dans une macro

Tags :
  • VB
  • Selection
  • Programmation
Dernière réponse : dans Programmation
15 Septembre 2016 22:03:50

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

Autres pages sur : selection plage cellule macro

a b L Programmation
15 Septembre 2016 22:43:52

c'est via la fonction range que tu vas appliquer la formule sur toutes les cellules d'une colonne. Cherche de ce côté :) 
m
0
l
a b L Programmation
16 Septembre 2016 08:48:20

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:
http://www.tomshardware.fr/forum/id-3026761/galere-ouf-...
m
0
l
Contenus similaires
16 Septembre 2016 10:13:41

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
m
0
l

Meilleure solution

a b L Programmation
16 Septembre 2016 11:58:40

Citation :

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:
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim ACell As Range
  3. Dim chn As String
  4. For Each ACell In Target.Cells
  5. If ACell.Value Like "########[a-z;A-Z][a-z;A-Z]##" Then
  6. chn = ACell.Value
  7. ACell.Value = Left$(chn, 2) & "." & Mid$(chn, 3, 4) & "." _
  8. & Mid$(chn, 7, 2) & "." & Mid$(chn, 9, 2) & "." & Right$(chn, 2)
  9.  
  10. End If
  11. Next
  12. End Sub

partage