Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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

La même mais dans une cellule
VB:
Sub ateau_sur_lo()
Dim ind_Guadeloupe$
ind_Guadeloupe = "590"
[A1].NumberFormat = "@"
[A1] = "33121111111"
[A1].Value = ind_Guadeloupe + Mid([A1], 3, 999)
[A1].Columns.AutoFit
End Sub
 

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
Supporter XLD
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:

job75

XLDnaute Barbatruc
Bonsoir Lionel, JM,

Lionel quand tu écris un code évite de dire que Gérard t'a conseillé quand c'est faux.

Ta macro SélectionChange est alambiquée et je n'y comprends pas grand-chose.

A+
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…