Remplacer une baréviation par son appellation complète

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 !

3xceln4ute

XLDnaute Occasionnel
Bonjour,

Je viens solliciter vos compétences pour m'aider à trouver une solution à mon tableau d'inventaire excel.
En fait, je désire remplacer une abréviation par sa dénomination complète.
Exemple:
Lorsque j'écris dans une case "Mob", je désire que "Mobilier de bureau" s'affiche, dans la même case toujours.
Aussi, je souhaite effectuer une recherchev, de tel façon que ça me permette d'afficher son code d'inventaire correspondant automatiquement.

Trouvez ci-joint un fichier explicatif.
 

Pièces jointes

Re : Remplacer une baréviation par son appellation complète

bonjour,

S'il y a peu de valeurs à substituer, tu peux peut-être ajouter les abréviations avec leur texte de remplacement dans la correction automatique (Bouton Office/Options Excel/Vérifications/Options de correction automatique, il suffit d'entrer l'abréviation dans le champ Remplacer et le texte complet dans le champ Par puis de cliquer sur Ajouter)

Attention toutefois, les paramètres de correction automatique sont associés à Excel et non au classeur.

Caillou
 
Re : Remplacer une baréviation par son appellation complète

Re,

Voici la formule à placer en B4 et à recopier vers le bas (Attention le format de cette cellule est en texte, il faut le remettre à Standard avant)
=RECHERCHEV(E4;$L$4:$N$9;3;FAUX)

Caillou
 
Re : Remplacer une baréviation par son appellation complète

Bonsoir,
Au cas où, un code permettant d'activer la correction automatique uniquement dans la plage voulue :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim DerLigne&, i&, Text
DerLigne = Range("M3").End(xlDown).Row
Set Text = Application.Intersect(Target, Range("E4:E26"))
    If Text Is Nothing Then
        With Application.AutoCorrect
            .ReplaceText = False
        End With
    Else
        For i = 4 To DerLigne
            Application.AutoCorrect.AddReplacement What:=Cells(i, 13).Value, _
            Replacement:=Cells(i, 12).Value
            With Application.AutoCorrect
                .CorrectSentenceCap = True
                .CorrectCapsLock = True
                .ReplaceText = True
                .DisplayAutoCorrectOptions = True
            End With
        Next i
    End If
End Sub
A+
 

Pièces jointes

Re : Remplacer une baréviation par son appellation complète

Re
Ce code reprend l'idée de caillou concernant l'option de correction automatique, mais te permet 2 choses :
- pas besoin d'aller dans cette option rentrer tes données une à une : il te suffit d'entrer la catégorie en colonne L et l'abréviation en colonne M et le code intègre ces données. Tu peux donc compléter ou modifier tes données comme tu le souhaites.
- contrairement au fait de procéder comme te l'a indiqué caillou, ce code n'active cette procédure que lorsque tu te trouves dans la plage E4:E26. Ainsi, si tu tapes "Mob" ailleurs que dans cette plage, "Mobilier de bureau" ne s'affichera pas.
Bien entendu, cette partie du code peut être désactivée si tu souhaites activer l'option de correction automatique sur toute ta feuille.
A+
 
Re : Remplacer une baréviation par son appellation complète

Ah comme ça c'est plus clair pour moi, franchement en combinant ton idée c'est plus pratique. Et le code maintenant est plus limpide.

Merci une nouvelle fois David.

Cordialement.
 
Re : Remplacer une baréviation par son appellation complète

Bonjour subirubi, Bonjour Caillou, Bonjour David84,

Si je puis me permettre, c'est une fausse bonne idée....
Comme l'avais précisé Caillou

Attention toutefois, les paramètres de correction automatique sont associés à Excel et non au classeur.

Ce qui veut dire que maintenant, dans n'importe quel classeur, taper Mob dans une cellule écrira Mobilier de bureau...
Et ça veut aussi dire que l'ouverture de ce classeur a "pourri" mes corrections automatique 😛

Bon, je m'en doutais mais comme je suis comme Saint Thomas...

Je pense donc qu'un remplacement sur Worksheet_change spécifique à la plage E4:E26 qui irait lire dans la liste des abréviations de la feuille pour faire le remplacement (et non pas dans les corrections automatiques) serait plus approprié
 
Re : Remplacer une baréviation par son appellation complète

Oui, cela faussera le dictionnaire d'excel. La macro semble plus appropriée.

Comment faire pour modifier la macro et la rendre utilisable pour ce fichier ?
Je souhaite avoir une explication pour mieux comprendre les remplacements à faire.
 

Pièces jointes

Re : Remplacer une baréviation par son appellation complète

Re
Suite à la remarque pertinente de Tototiti, ci-joint nouvelle proposition.
A+
Eidt : bonsoir Tototiti🙂

Code légèrement simplifié :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim DerLigne&, i&, PremAdresse, c
DerLigne = Range("M3").End(xlDown).Row
If Not Intersect(Target, Range("E4:E26")) Is Nothing Then
    With Range("M4:M" & DerLigne)
        Set c = .Find(Target, LookIn:=xlValues, Lookat:=xlWhole)
        If Not c Is Nothing Then
            PremAdresse = c.Address
            Do
            Target.Value = Cells(c.Row, 12).Value
            Loop While Not c Is Nothing And c.Address <> PremAdresse
        End If
    End With
End If
End Sub
 

Pièces jointes

Dernière édition:
Re : Remplacer une baréviation par son appellation complète

Merci à Tototiti2008 qui a implémenté le code avec explication, car par la suite j'ai rajouté une colonne et j'ai pu modifié le code selon sa nouvelle disposition, donc parfait.
David je te remercie également pour ton aide si précieuse, sans oublier Caillou par la présente.
Mon souci est réglé et le travail est presque fini grâce à vous et au forum.

Cordialement 🙂.
 
Re : Remplacer une baréviation par son appellation complète

Bonjour,

Je bute sur un autre souci, je souhaite aussi ajouter des abréviations à la colonne K, pour la colonne C.
Que faut-il que je modifie dans ce code, pour qu'il prenne en charge la colonne C ?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count = 1 Then 'Si une suele cellule modifiée
        If Target.Column = 4 Then 'Si colonne D
            If Application.CountIf(Range("K5:K" & Range("K65536").End(xlUp).Row), Target.Value) > 0 Then 'Si la valeur saisie existe dans la colonne K
                Application.EnableEvents = False 'Désactivation des évènements (emêche les boucles infinies)
                Target.Value = Range("J" & 4 + Application.Match(Target.Value, Range("K5:K" & Range("K65536").End(xlUp).Row), 0)).Value 'récupération dans la colonne J de la valeur trouvée en colonne K
                Application.EnableEvents = True 'Réactivation des évènements
            End If
        End If
    End If
End Sub

Merci de m'orienter.
 
- 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
Retour