Base de connaissances KB0156 

Je ne peux pas coller des données sur la feuille de données think-cell ou le format est perdu

Symptômes

Vous souhaitez copier les données d'un classeur Excel (.xlsx) pour les coller dans la feuille de données interne d'un graphique think-cell. Lorsque vous collez les données, vous observez l'un des problèmes suivants :

  • Le message suivant s'affiche : Microsoft Excel ne peut pas coller les données.
  • Seules les cellules vides sont collées.
  • Votre format de date ou de nombres a été perdu, par exemple 1/1/2012 passe à 40909 ou $3.5 passe à 3.5.
  • Après collage, les valeurs de pourcentage s'affichent de façon incorrecte. La disposition peut changer dans la totalité des graphiques.
  • Les couleurs de cellule n'apparaissent pas dans le graphique alors que vous avez coché l'option Utiliser le remplissage de la feuille de données en haut.

Ces problèmes peuvent également survenir lorsque vous utilisez les liaisons de données Excel de think-cell.

Problème 1

Chacun des problèmes ci-dessus peut se produire si le classeur .xslx contient plus de 65 490 styles de cellules environ. Vous pouvez vérifier le nombre de styles de cellule grâce à la commande VBA suivante dans la Fenêtre Exécution:
print Activeworkbook.Styles.Count

Pour ce faire, procédez comme suit :

  1. Ouvrez l'éditeur VBA en appuyant sur Alt+F11.
  2. Accédez à Fenêtre d'exécution. Si elle n'est pas visible, vous pouvez l'afficher en cliquant sur AffichageFenêtre d'exécution.
  3. Saisissez la commande suivante et appuyez sur Entrée
    print Activeworkbook.Styles.Count

Solution 1 : Nettoyez tous les classeurs concernés

  • Copiez vos feuilles de calcul dans un nouveau classeur

    Dans Office 2013 et ses versions ultérieures, le fait de copier les feuilles de calcul entre les classeurs permet d'éviter l'accumulation par défaut de styles de cellules inutilisés :

    • Sélectionnez toutes les feuilles de votre classeur, maintenez SHIFT et cliquez sur la première et la dernière feuilles de calcul.
    • Effectuez un clic droit sur la sélection : Déplacer ou copier…Vers le classeur : (nouveau classeur) et cochez Créer une copieOK
    • Enregistrez un nouveau classeur sous un nouveau nom.

    Dans Office 2007 et 2010, le fait de copier une feuille de calcul dans un nouveau classeur copie l'ensemble des styles de cellules inutilisés. Afin d'éviter cela, veuillez activer le correctif suivant en premier lieu :

    Si votre version d'Office est entièrement à jour, ce correctif est probablement déjà installé. Cependant, vous devez également activer ce correctif en utilisant la solution Fix it de Microsoft ou dans le registre, comme explicité dans les articles Microsoft suivants :

    Si l'activation du correctif ne fonctionne pas, appliquez la mise à jour mentionnée à la section Résolution dans les articles Microsoft ci-dessus.

  • Nettoyez vos classeurs avec un outil de nettoyage

    Utilisez l’outil de nettoyage recommandé par Microsoft dans KB213904. À l’aide de l’outil XLStyles, cliquez sur Get Excel File, sélectionnez Force all cell styles to 'Normal', puis cliquez sur Process File. Lorsque le fichier nettoyé s'ouvre dans Excel, enregistrez-le sous un nouveau nom.

  • Supprimez les styles de cellule personnalisés de votre classeur à l’aide d’une macro VBA

    Ouvrez l'éditeur VBA en appuyant sur Alt+F11. Sélectionnez votre classeur et cliquez sur InsertionModule. Collez ensuite l'une des macros suivantes et lancez-la en appuyant sur F5 :

    DeleteCustomStyles() supprime l'ensemble des styles de cellule personnalisés de votre classeur.

    Sub DeleteCustomStyles()
    Dim st As Style
    Dim i, i_cust As Long
    i_cust = 0
    For i = (ActiveWorkbook.Styles.Count) To 1 Step -1
    	With ActiveWorkbook.Styles(i)
    		If .BuiltIn = False Then
    			On Error Resume Next
    			.Locked = False
    			On Error GoTo 0
    			If Not .Locked Then
    				.Delete
    				i_cust = i_cust + 1
    			End If
    		End If
    	End With
    	If (i Mod 100) = 0 Then Debug.Print i
    Next
    MsgBox "Styles deleted: " & i_cust & " styles" & Chr(13) & "Styles left: " & ActiveWorkbook.Styles.Count
    End Sub

La meilleure solution consisterait à éviter de coller les styles de cellules inutilisés, mais nécessite la résolution d’un bug par Microsoft dans Excel 2007 et les versions ultérieures. Jusqu'à présent, Microsoft n'a pas jugé que l'impact était suffisamment important sur les sociétés pour développer un correctif. Si votre société possède un contrat auprès de l’Assistance Microsoft Office, vous pouvez contacter Microsoft pour demander un correctif en leur mentionnant le numéro de dossier 113012810172527, 114021711190574 (Excel 2013).

Explication 1

Le format de fichier utilisé lors du collage des données dans la feuille de données think-cell ou lors du transfert via un lien de données Excel (format de fichier Biff12/.xlsb) ne prend en charge qu’environ 65 490 styles de cellules. En cas de transfert de données depuis un classeur .xlsx qui comporte un plus grand nombre de styles de cellule vers la feuille de données think-cell, les informations de mise en forme sont perdues ou l'opération de collage est impossible.

Certains classeurs .xlsx contiennent un nombre important (plusieurs dizaines de milliers) de styles de cellule en raison de bogues et de la conception problématique du code dans Excel. Les outils de reporting qui génèrent parfois un nombre excessif de styles de cellule peuvent contribuer à ce problème. Dans certains cas, tous les styles de cellule inutilisés sont également copiés lors de la copie de cellules ou de feuilles de calcul entre classeurs.

  • Copiez une feuille de calcul dans un nouveau classeur avec Excel 2007 ou 2010 :
    Effectuez un clic droit sur l’onglet feuille de calcul → Déplacer ou copier…Vers le classeur : (nouveau classeur) et cochez Créer une copie.
  • Copier/coller des cellules (même une seule cellule) dans un autre classeur lors d’un processus Excel distinct ou dans la feuille de données interne de think-cell
    • Pour lancer un processus Excel distinct, effectuez un clic droit sur le symbole Excel dans la barre de tâches et cliquez sur Microsoft Excel 20… Comment lancer un processus Excel distinct.
    • Dans Excel 2013 et versions ultérieures, appuyez en même temps sur la touche ALT afin de lancer un processus distinct. Confirmez le message Souhaitez-vous démarrer une nouvelle session Excel ? en cliquant sur Oui.
    • think-cell est concerné, car notre feuille de données repose sur une feuille de calcul Excel dans un processus Excel séparé.

La copie de cellules dans un nouveau classeur dans le même processus Excel ne copie pas les styles de cellule inutilisés.

Problème 2

Il se peut que vous réussissiez, dans un premier temps, à copier/coller les données d'un classeur Excel (.xlsx) dans la feuille de données interne d'un graphique think-cell, mais que toutes les tentatives de copier/coller suivantes (même d'une cellule vide) dans cette même feuille de données entraînent l'affichage du message Microsoft Excel ne peut pas coller les données. Dans ce cas, les autres problèmes mentionnés dans la section Symptômes ci-dessus ne se produisent pas.

Ce problème se produit en copiant des données entre des processus Excel distincts, si un style de tableau personnalisé portant le même nom figure à la fois dans le fichier source et dans le fichier cible. Comme la première opération de copier/coller copie également les styles de tableau personnalisés, les tentatives de copier/coller suivantes échouent. Le problème est reproductible sans think-cell.

Reproduction de l'erreur sans think-cell

  1. Lancez deux processus Excel. Si vous créez un nouveau classeur avec Ctrl+N alors que Excel est déjà ouvert, le second classeur est conservé dans le même processus Excel.
    • Pour lancer un processus Excel distinct, effectuez un clic droit sur le symbole Excel dans la barre de tâches et cliquez sur Microsoft Excel 20… Comment lancer un processus Excel distinct.
    • Dans Excel 2013 et versions ultérieures, appuyez en même temps sur la touche ALT afin de lancer un processus distinct. Confirmez le message Souhaitez-vous démarrer une nouvelle session Excel ? en cliquant sur Oui.
  2. Dans le classeur ouvert dans le premier processus Excel, sélectionnez ExcelAccueilStylesMettre sous forme de tableau Nouveau style de tableau...OK. Cette opération entraîne l’insertion d’un nouveau style de tableau personnalisé appelé "Table Style 1".
  3. Copiez/collez une cellule depuis le classeur contenant "Table Style 1" vers l’autre classeur dans le deuxième processus Excel. Cette opération fonctionne la première fois.
  4. À nouveau, copiez/collez une cellule depuis le classeur contenant "Table Style 1" vers l’autre classeur dans le deuxième processus Excel. La deuxième fois, cette opération échoue et affiche le message Microsoft Excel ne peut pas coller les données.

Solution 2

  • Excel 2007 et les versions antérieures ne sont pas concernés par ce problème.
  • Dans Excel 2010, ce problème persiste à partir de novembre 2015. Si votre société possède un contrat auprès de l'Assistance Microsoft Office, vous pouvez contacter Microsoft pour demander un correctif en leur mentionnant le numéro de dossier 113012810172527, 114021711190574 (Excel 2013).

    Dans l'intervalle, vous pouvez utiliser les solutions provisoires suivantes :

    • Collez les données dans la feuille de données think-cell sous la forme de texte :

      Feuille de données think-cellCollerPlus (le petit bouton en forme de triangle à côté du bouton Coller) → Collage Spécial…TexteOK.

    • Cliquez sur le bouton Supprimer les formats de toutes les cellules dans la feuille de données interne de think-cell. Cela permettra de supprimer les styles de tableau personnalisés de la feuille de données et de faire fonctionner au moins une fois les commandes insérées par la suite.
  • Microsoft a corrigé ce problème dans Excel 2013. Veuillez installer le correctif KB2881014 depuis les Mises à jour Microsoft Office du 10 juin 2014 ou le correctif KB2881042.

Partager