XL 2016 Trouve une valeur dans une colonne et à appliquer à une seule valeur

Philippe Château

XLDnaute Occasionnel
Bonjour à toutes et tous,
J'ai un fichier de téléphonie qui pour un numéro de téléphone donne plusieurs valeurs (Nom du produit), mais dans ce champs, je ne suis intéressé que par la valeur "Restriction appels entrants", alors comment redonder la valeur "ACTIVE" ou "SUSPENDUE" à un numéro de téléphone ? je sèche...
Merci à toutes et tous, et surtout portez vous bien
 

Pièces jointes

  • Classeur2.xlsx
    9.9 KB · Affichages: 28

soan

XLDnaute Barbatruc
Inactif
Bonjour Philippe,

relis mon post #14 car je viens de le modifier ; ma blague était pour ironiser
mon « invention » d'un Talkie-walkie G8 de dernière génération ; j'espère
que je ne t'ai pas vexé ; de toute façon, j'ai supprimé ce passage. ;)

dommage que tu te focalises plus sur les formules que sur les macros ;
car ma solution fonctionne « à la volée », lors de la saisie de « rae » ;
à propos, n'as-tu pas apprécié de pouvoir saisir cette abréviation,
qui est transformée en « Restriction des appels entrants » ?

comme la transformation est faite dans la même cellule que celle où
tu as saisi la donnée, c'est impossible d'obtenir ça par formule, mais
c'est possible par VBA.

enfin, je rappelle que même si les lignes de données sont dans
n'importe quel ordre, tu auras quand même le bon résultat
attendu ; inutile de trier le tableau.

--------------------------------------------------------------------------------

ooopps ! tu as écrit : « Pour le fichier Classeur2 V4, il est en xlsm,
et malheureusement interdit par la sécurité » ; mais quand VBA
est seul à pouvoir résoudre un exo, comment fais-tu ? s'il n'y a
pas de solution par formule, tu es alors bloqué ! :confused:

(mais tu peux essayer mon fichier sur ton PC perso, chez toi)


soan
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
Bonjour à tous,

je mets ici le code VBA du fichier de mon post #14 ; comme j'ai utilisé
la méthode des tableaux, c'est probablement très rapide, même sur
un très gros volume de données. 😊 (et la sub ne fait que 20 lignes)


VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
    If .CountLarge > 1 Then Exit Sub
    If .Column <> 4 Then Exit Sub
    If .Row = 1 Then Exit Sub
    If .Value <> "rae" Then Exit Sub
    Dim T, nlt$, n&, i&: nlt = .Offset(, -3)
    n = Cells(Rows.Count, 1).End(3).Row: If n = 1 Then Exit Sub
    T = [A1].Resize(n, 5): Application.ScreenUpdating = 0
    Application.EnableEvents = 0
    .Value = "Restriction appels entrants"
    Application.EnableEvents = -1
    For i = 2 To n
      If T(i, 1) = nlt Then T(i, 5) = "SUSPENDUE"
    Next i
    [E1].Resize(n) = Application.Index(T, _
      Evaluate("Row(" & "1:" & n & ")"), 5)
  End With
End Sub
rappel important : c'est pas nécessaire que le tableau soit trié ! ;)

il y a aussi une détection automatique de la dernière ligne utilisée,
donc ça marche aussi si on ajoute des lignes supplémentaires.


soan
 

Discussions similaires

Réponses
6
Affichages
142

Statistiques des forums

Discussions
312 451
Messages
2 088 519
Membres
103 876
dernier inscrit
Audrey82