IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Remplacer valeur dans un tableau croisé dynamique


Sujet :

Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 17
    Points
    17
    Par défaut Remplacer valeur dans un tableau croisé dynamique
    Bonjour tout le monde,

    voici mon souci, j'espère que vous pourrez m'aider car ça quelque temps que je traine mon problème, enfin bref...

    J'ai créé un tableau croisé dynamique sur Excel en reprenant les données d'un requête Access. Dans le tableau au lieu de me renvoyé les données il me les calcule donc au lieu d'avoir "occupé", j'ai "1". J'aimerai le remplacer. Donc j'ai écrit un code VB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub remplacer()
        Dim UneCellule As Range
     
    ActiveSheet.Range("D1:D10").Select
    Dim p As String
    'Pour chaque cellule de la colonne
    For Each UneCellule In Selection
        'récupération de la valeur
        p = UneCellule.Value
        'remplacement des 1 par L
        p = Replace(p, "1", "L")
        'remise de p dans la cellule
        UneCellule.Value = p
    Next
        End Sub
    mais il me met l'erreur 1004.

    Avez vous une solution svp.

    Merci d'avance et bonne journée.

  2. #2
    Membre averti Avatar de J.Michel
    Inscrit en
    Septembre 2007
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Septembre 2007
    Messages : 279
    Points : 323
    Points
    323
    Par défaut
    Essaye comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub remplacer()
        Dim UneCellule As Range
     
        'Pour chaque cellule de la colonne
        For Each UneCellule In ActiveSheet.Range("D1:D10")
            'remplacement des 1 par L
            UneCellule.Value = Replace(UneCellule.Value, "1", "L")
        Next
    End Sub
    (\ _ /)
    (='.'=)
    L'erreur est humaine. Mais pour une véritable catastrophe il faut un ordinateur
    (")-(") Lorsque votre problème est solutionné, merci de cliquer sur

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    J'ai essayé et j'ai toujours la même erreur

  4. #4
    Membre averti Avatar de J.Michel
    Inscrit en
    Septembre 2007
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Septembre 2007
    Messages : 279
    Points : 323
    Points
    323
    Par défaut
    Chez moi ce code fonctionne bien.
    Le seul cas ou je récupère l'erreur 1004 c'est lorsque ma feuille est protégée.
    Ta feuille est-elle protégée ?
    (\ _ /)
    (='.'=)
    L'erreur est humaine. Mais pour une véritable catastrophe il faut un ordinateur
    (")-(") Lorsque votre problème est solutionné, merci de cliquer sur

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    comment sait ton si elle est protégé ou pas?

  6. #6
    Membre averti Avatar de J.Michel
    Inscrit en
    Septembre 2007
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Septembre 2007
    Messages : 279
    Points : 323
    Points
    323
    Par défaut
    Menu Outils/Protection
    Si ca te propose de proteger ta feuilles c'est qu'elle n'est pas protégée.
    Si ca te propose de déprotéger ta feuille c'est qu'elle est protégée.
    Par contre si elle est protégée avec mot de passe il faut connaître ledit mot de passe pour déprotéger.

    Sinon via VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Unprotect
    (\ _ /)
    (='.'=)
    L'erreur est humaine. Mais pour une véritable catastrophe il faut un ordinateur
    (")-(") Lorsque votre problème est solutionné, merci de cliquer sur

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    donc j'ai fait ce que tu m'as dit et elle n'est pas protégé

  8. #8
    Membre averti Avatar de J.Michel
    Inscrit en
    Septembre 2007
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Septembre 2007
    Messages : 279
    Points : 323
    Points
    323
    Par défaut
    Si ce n'est pas confidentiel, peux tu nous passer ton fichier en PJ
    C'est plus facile de bosser sur du concret d'autant que chez moi c'est ok
    (\ _ /)
    (='.'=)
    L'erreur est humaine. Mais pour une véritable catastrophe il faut un ordinateur
    (")-(") Lorsque votre problème est solutionné, merci de cliquer sur

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    tableau dynamique2.xls
    Voici le fichier

  10. #10
    Membre averti Avatar de J.Michel
    Inscrit en
    Septembre 2007
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Septembre 2007
    Messages : 279
    Points : 323
    Points
    323
    Par défaut
    Bon ça va tout de suite mieux.
    En fait tu cherches à modifier un TCD et tu n'as pas le droit.
    Les résultats d'un TCD sont protégés d'où l'erreur 1004
    J'avais fait tout mes tests sur des cellules d'une feuille simple.
    Dans ce cas il faut peut être faire ton TCD différement.
    Je planche et si j'ai une soluce et te la donnerais
    (\ _ /)
    (='.'=)
    L'erreur est humaine. Mais pour une véritable catastrophe il faut un ordinateur
    (")-(") Lorsque votre problème est solutionné, merci de cliquer sur

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    merci beaucoup
    ça m'aiderai vraiment

  12. #12
    Membre averti Avatar de J.Michel
    Inscrit en
    Septembre 2007
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Septembre 2007
    Messages : 279
    Points : 323
    Points
    323
    Par défaut
    Alors j'ai trouvé un truc un peu tiré par les cheuveux mais bon ....
    Si j'ai bien compris le pb, Soit pour la date donnée tn n'as pas d'enregistrement, soit tu as un enregistrement avec 1 dans le champ "libre".

    Donc j'ai bricolé cette procédure qui formate le champ dynamique "Somme De Libre" pour mettre Occupé dès qu'il contient un chiffre et pour ecrire systématiquement Libre s'il n'y a pas de valeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub TestPivot()
        Dim TcD As PivotTable
        Set TcD = ActiveSheet.PivotTables(1)
        With TcD
             .PivotFields("Somme De Libre").NumberFormat = """Occupé"""
             .NullString = "Libre"
        End With
    End Sub
    Dis moi si ça te conviens ou au moins si ça te mets sur une piste que tu pourras adapter.
    (\ _ /)
    (='.'=)
    L'erreur est humaine. Mais pour une véritable catastrophe il faut un ordinateur
    (")-(") Lorsque votre problème est solutionné, merci de cliquer sur

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    bon ben ça fonctionne toujours pas, toujours la même erreur, c'est désespérant...

  14. #14
    Membre averti Avatar de J.Michel
    Inscrit en
    Septembre 2007
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Septembre 2007
    Messages : 279
    Points : 323
    Points
    323
    Par défaut
    J'ai fais cette procédure sur ton fichier et ça fonctionnait.
    Je ne comprend plus

    Bon je re-test ....
    (\ _ /)
    (='.'=)
    L'erreur est humaine. Mais pour une véritable catastrophe il faut un ordinateur
    (")-(") Lorsque votre problème est solutionné, merci de cliquer sur

  15. #15
    Membre averti Avatar de J.Michel
    Inscrit en
    Septembre 2007
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Septembre 2007
    Messages : 279
    Points : 323
    Points
    323
    Par défaut
    Ok vu:
    Après tous mes tests il restait une erreur de frappe
    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             .PivotFields("Somme De Libre").NumberFormat = """Occupé"""
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             .PivotFields("Nombre De Libre").NumberFormat = """Occupé"""
    Attention, si tu change le type de calcul sur "Libre" il faudra adapter ta procédure.
    (\ _ /)
    (='.'=)
    L'erreur est humaine. Mais pour une véritable catastrophe il faut un ordinateur
    (")-(") Lorsque votre problème est solutionné, merci de cliquer sur

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    C'est trop méga génial de la mort qui tue
    Ça marcheeeeeeeeeeeeeeuuuuuuuuuuuuuuuuhhhhhhhhhhh.
    Merci mille fois.

  17. #17
    Membre averti Avatar de J.Michel
    Inscrit en
    Septembre 2007
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Septembre 2007
    Messages : 279
    Points : 323
    Points
    323
    Par défaut
    Content d'avoir pu te rendre service.

    Si tout fonctionne, pense à cocher
    (\ _ /)
    (='.'=)
    L'erreur est humaine. Mais pour une véritable catastrophe il faut un ordinateur
    (")-(") Lorsque votre problème est solutionné, merci de cliquer sur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Valeur erronée dans un tableau croisé dynamique
    Par Kimy_Ire dans le forum Excel
    Réponses: 3
    Dernier message: 23/10/2012, 20h45
  2. Lire une valeur dans un tableau croisé dynamique
    Par hugues03 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 09/06/2010, 18h57
  3. Vérifier si une valeur est dans un tableau croisé dynamique
    Par psykodumarteau dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/07/2008, 13h39
  4. Réponses: 1
    Dernier message: 21/01/2008, 18h04
  5. Réponses: 4
    Dernier message: 27/11/2006, 23h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo