Microsoft 365 Remplacer le 33 du numéro de téléphone (Petite dernière du WE )

Usine à gaz

XLDnaute Barbatruc
Bonsoir à toutes et à tous,

Ne trouvant pas la solution à mon besoin, je me tourne (encore une fois lol) vers nos ténors :

Tous mes numéros commencent par 33 et les 9 chiffres à la suite.
Pour appeler les Dom Tom pas de souci, appeler avec le 33 111111111, ça marche.
Mais pour envoyer un sms avec mon opérateur, il n'en est pas de même.
En effet, pour que le sms parte et arrive à destination, il faut que le 33 soit remplacé par l'indicatif téléphonique du département d'Outre mer.

Dans le fichier test joint, j'ai mis 2 numéros 33111111111 et 33222222222 en col "E".

Grâce à Gérard qui me l'a appris (comme tant d'autres trucs), je fais comme suit :
1 - je clic sur le numéro de téléphone et "ActiveCell.Name = "MaCell" 'nomme la cellule : ça c'est OK,
2 - ensuite, (ce que je n'ai pas trouvé pour l'instant), le clic sur l'indicatif choisi en col "I" doit me remplacer le 33 du n° mémorisé par l'indicatif de la cellule cliquée.

Mes recherches m'ont permis de trouver ce code "MaCell.value = Replace(ActiveCell.value, "33", "", 1, 1, 1)" que j'ai tenté de modifier mais sans succès jusqu'à maintenant.
Auriez-vous le bon code ?

Continuant mes recherches, je joins le fichier test bien connu maintenant.
Avec mes remerciements,
lionel :)
 

Pièces jointes

  • inputBox_ModifCelluleP_OKTel.xlsm
    31.4 KB · Affichages: 12
Solution
Pourquoi pas ce code très simple à la place de la bordélique SelectionChange :
VB:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target(1).Locked = True Or Left(Target(1), 2) <> "33" Then Exit Sub
Dim code As Variant
Cancel = True
code = Application.InputBox("Code pour remplacer 33 :", "Code", , 2)
If code <> "" And code <> False Then Target(1) = code & Mid(Target(1), 3)
End Sub

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

Lionel
Je ne sais pas comment tu cherches mais tu le fais bizarrement ;)
A titre d'inspiration et pour adaptation à ton fichier
VB:
Sub argggh()
Dim X$, INDIC
INDIC = "TOTO"
X = "33121111111"
MsgBox X
Z = INDIC & Mid(X, 3, 999)
MsgBox Z
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Les indicatifs sont bien ceux-ci?
'Pays Indicatif
'Guadeloupe 590
'Guyane 594
'La reunion 262
'Martinique 596
'Mayotte 269
'Nouvelle-calédonie 687
'Polynésie française 689
'Saint-barthélemy 590
'Saint-martin 590
'Saint-pierre-et-miquelon 508
'Wallis-et-futuna 681

PS: je n'ai pas ouvert ton fichier
Je ne voudrais qu'il fiche le souk dans mon Dock ;)
 

Usine à gaz

XLDnaute Barbatruc
Re

Les indicatifs sont bien ceux-ci?
'Pays Indicatif
'Guadeloupe 590
'Guyane 594
'La reunion 262
'Martinique 596
'Mayotte 269
'Nouvelle-calédonie 687
'Polynésie française 689
'Saint-barthélemy 590
'Saint-martin 590
'Saint-pierre-et-miquelon 508
'Wallis-et-futuna 681

PS: je n'ai pas ouvert ton fichier
Je ne voudrais qu'il fiche le souk dans mon Dock ;)
LOL : OUI, ça semble bon et tu m'en a ajoutée :)
 

Staple1600

XLDnaute Barbatruc
Re

Donc en relisant ton message et en testant un chouia plus
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("E1:E20")) Is Nothing Then
If Len(Target) = 11 Then
Target.NumberFormat = "@"
Target = Target.Offset(, 4) & Mid(Target, 3, 99)
End If
End If
End Sub
CECI EST UN TEST
(donc à adapter ou à tester comme moi sur une feuille vierge)
J'ai saisi les indicatifs en colonne I
puis je saisi 33111111111 en E5 par exemple
puis je sélectionne E5
Le remplacement se fait alors.

EDITION: Bonsoir job75
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Re JM,
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("E6:E15")) Is Nothing Then
If Len(Target) = 11 Then
Target.NumberFormat = "@"
Target = Target.Offset(, 4) & Mid(Target, 3, 99)
End If
End If
End Sub
Fonctionne :)

J'aimerais créer une msgbox pour sélectionner l'indicatif de remplacement.
Je vais chercher en espérant que je saurai modifier ton code lol.
Merci JM :)
 

job75

XLDnaute Barbatruc
Pourquoi pas ce code très simple à la place de la bordélique SelectionChange :
VB:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target(1).Locked = True Or Left(Target(1), 2) <> "33" Then Exit Sub
Dim code As Variant
Cancel = True
code = Application.InputBox("Code pour remplacer 33 :", "Code", , 2)
If code <> "" And code <> False Then Target(1) = code & Mid(Target(1), 3)
End Sub
 

Pièces jointes

  • inputBox_ModifCelluleP_OKTel(1).xlsm
    32.1 KB · Affichages: 10

Statistiques des forums

Discussions
315 132
Messages
2 116 587
Membres
112 798
dernier inscrit
nicoolio