Passer directement au contenu principal

Utiliser d’autres fonctionnalités pour identifier les types de données liés

Les types de données liés ont été publiés enExcel pour Office 365 s en juin 2018, et de cette manière, d’autres fonctionnalités risquent de ne pas pouvoir les identifier. Cela peut s’avérer particulièrement vrai lorsque vous voulez utiliser d’autres fonctionnalités pour déterminer si une cellule contient ou non un type de données lié. Cet article décrit certaines solutions de contournement que vous pouvez utiliser pour identifier les types de données liés dans les cellules.

Formules

Vous pouvez toujours écrire des formules qui font référence à des types de données. Toutefois, si vous souhaitez extraire le texte d’une cellule avec un type de données lié à l’aide de la fonction texte, vous obtiendrez une #VALUE. #VALEUR!.

Pour contourner ce problème, vous pouvez utiliser la fonction valeurchamp et spécifier le champ Name pour l’argument field_name . Dans l’exemple suivant, si la cellule a1 contient un type de données boursière, la formule renverra le nom du brut.

= VALEURCHAMP (a1 ; "nom")

Toutefois, si la cellule a1 ne contient pas de type de données lié, la fonction VALEURCHAMP renvoie une erreur #FIELD !.. Pour déterminer si une cellule contient ou non un type de données lié, vous pouvez utiliser la formule suivante qui utilise la fonction ISERROR pour vérifier si la fonction VALEURCHAMP renvoie une erreur.

= Si (ESTERREUR (VALEURCHAMP (a2, "nom")), "cette cellule ne contient pas de type de données lié", "cette cellule a un type de données lié")

Si la formule génère une erreur, elle renvoie le texte « cette cellule ne possède pas de type de données lié »; sinon, elle renvoie « cette cellule a un type de données lié ».

Si vous voulez simplement supprimer le #FIELD. erreur, vous pouvez utiliser les éléments suivants :

= SIERREURur (VALEURCHAMP (a1 ; "nom"), "")

Qui renvoie une cellule vide s’il y a une erreur.

Mise en forme conditionnelle

Vous pouvez appliquer une mise en forme conditionnelle à une cellule en fonction de la présence d’un type de données lié. Vous devez commencer > par sélectionner les cellules qui nécessitent la mise en forme conditionnelle, puis accéder à lamise en forme conditionnelle > nouvelle règle > utiliser une formule... Pour la formule, vous devez utiliser la formule suivante :

= NON (ESTERREUR (VALEURCHAMP (a1 ; "nom")))

Où la cellule a1 est la première cellule de la plage que vous voulez évaluer. Appliquez ensuite le format souhaité.

Dans cet exemple, si la cellule a1 contient un nom de champ valide pour « nom », la formule retourne la valeur TRUE et la mise en forme est appliquée. Si la cellule a1 ne contient pas de type de données lié, la formule retourne la valeur FALSe et aucune mise en forme ne sera appliquée. Vous pouvez supprimer la valeur NOT si vous souhaitez mettre en surbrillance des cellules ne contenant pas de types de données liés valides.

VBA

Plusieurs méthodes VBA (Visual Basic pour applications) vous permettent de déterminer si une cellule ou une plage contient des types de données liés. Cette première procédure utilise la propriété HasRichDataType

Ces deux procédures vous invitent à sélectionner une plage de cellules à évaluer et renvoient une zone de message avec les résultats.

Sub IsLinkedDataType()
    Dim c As Range
    Dim rng As Range
    Dim strResults As String
    
    Set rng = Application.InputBox("Select a range to check for linked data types", Type:=8)
    
    For Each c In rng
      '    Check if the HasRichDataType is TRUE or FALSE
        If c.HasRichDataType = True Then
        '   The cell holds a linked data type
            strResults = strResults & c.Text & " - Linked data type" & vbCrLf
        Else
            strResults = strResults & c.Text & " - Not a linked data type" & vbCrLf
        End If
    Next c

    MsgBox "Your range contains the following details" & vbCrLf & vbCrLf & strResults, vbInformation + vbOKOnly, "Results"
    
End Sub

Cette procédure suivante utilise la propriété LinkedDataTypeState.

Sub IsLinkedDataTypeState()
    Dim c As Range
    Dim rng As Range
    Dim strResults As String
    
    Set rng = Application.InputBox("Select a range to check for linked data types", Type:=8)
    
    For Each c In rng
   '    Check if the LinkedDataTypeState is 1 (TRUE) or 0 (FALSE)
        If c.LinkedDataTypeState = 1 Then
        '   The cell holds a linked data type
            strResults = strResults & c.Text & " - Linked data type" & vbCrLf
        Else
            strResults = strResults & c.Text & " - Not a linked data type" & vbCrLf
        End If
    Next c
    
   MsgBox "Your range contains the following details" & vbCrLf & vbCrLf & strResults, vbInformation + vbOKOnly, "Results"

End Sub

Cet extrait de code final est une fonction définie par l’utilisateur (UDF), que vous référencez comme n’importe quelle autre formule Excel. Entrez simplement =fn_IsLinkedDataType (a1), où a1 correspond à la cellule que vous voulez évaluer.

Public Function fn_IsLinkedDataType(c As Range)
'   Function will return TRUE if a referenced cell contains a linked data type
    If c.HasRichDataType = True Then
      fn_IsLinkedDataType = "Linked data type"
    Else
        fn_IsLinkedDataType = "Not a linked data type"
    End If
End Function

Pour utiliser l’un de ces exemples, appuyez sur ALT + F11 pour ouvrir Visual Basic Editor (VBE), accédez à Insérer> moduleet collez le code dans la nouvelle fenêtre qui s’ouvre à droite. Lorsque vous avez terminé, vous pouvez utiliser les touches Alt + Q pour quitter Excel. Pour utiliser l’un ou l’autre des deux premiers exemples, accédez à l' onglet développeur> code> macros> sélectionnez la macro que vous voulez exécuter dans la liste, puis sélectionnez exécuter.

Besoin d’aide supplémentaire ?

Vous pouvez toujours consulter un expert de la communauté technique Excel, obtenir une assistance dans la communauté Answers ou suggérer une nouvelle fonctionnalité ou une amélioration sur le forum Excel User Voice.

Développez vos compétences dans Office
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoignez le programme Office Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

Merci pour vos commentaires. Il serait vraisemblablement utile pour vous de contacter l’un de nos agents du support Office.

×