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

Microsoft 365 Code pour conversion automatique km/mi en fonction du choix de l'unité

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 !

loulou14

XLDnaute Nouveau
Bonjour (et bonne année à tous)

Je souhaite convertir les données d'un tableau automatiquement en fonction de l'unité choisies (colonne B) pour chaque ligne du tableau
Si je choisis km, alors toutes les cellules "distances" sont converties en kilomètres
Si je choisis mi, alors toutes les cellules "distances" sont converties en miles

Je joins un fichier exemple

Merci d'avance pour votre support
 

Pièces jointes

Bonjour,
@loulou14 , sur votre navigateur en recherchant par exemple "formule excel conversion km mile"
vous aurez facilement la formule "magique" suivante qui fonctionne dans les 2 sens évidemment 😉
VB:
=CONVERT(B5; "km"; "mi")
[EDIT à 17h30]
Les distances sont-elles saisies manuellement ou le tableau est-il importé (copier-coller ou autre) ?
Sinon, un peu l'histoire de la poule ou l’œuf, les distances saisies (ou importées) devront être dans l'unité de la colonne B (unité) sinon le calcul sera systématiquement à l'envers.
Dans la solution proposée par @vgendron, puisque la fonction de conversion existe, pourqouoi ne pas l'utiliser (voir le code ci-dessous)

VB:
Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, ActiveSheet.ListObjects(1).ListColumns(2).Range) Is Nothing Then Exit Sub

Application.EnableEvents = False
    With ActiveSheet.ListObjects(1)
        Unité = Target
        Select Case Unité
            Case "mi"
                '''coef = 1 / 1.60934
                coeff = Application.WorksheetFunction.Convert(1, "km", "mi")
            Case "km"
                '''coef = 1.60934
                coeff = Application.WorksheetFunction.Convert(1, "mi", "km")
            Case Else
                coef = 1
        End Select
        i = Target.Row - .Range.Row
        'MsgBox i
        For j = 3 To .ListColumns.Count
            If .HeaderRowRange(j) Like "Distance*" Then
                .DataBodyRange(i, j) = .DataBodyRange(i, j) * coef
            End If
        Next j
    End With
    
Application.EnableEvents = True
End Sub
 
Dernière édition:
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…