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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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é ! 😕

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


soan
 
Dernière édition:
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
334
Retour