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

Macros et VBA Excel Discussion :

Tableau dynamique [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Par défaut Tableau dynamique
    Bonjour à tous, me revoilà avec un nouveau projet et donc de nouveaux problèmes (sinon c'est pas drôle )

    J'arrive par macro à créer un tableau dynamique en important un fichier text.

    Le problème je voudrai en rafraîchir un autre (ça je pense savoir), pour cela je doit copier une sélection de cellules dans une autre feuille à la suite des autres. La déjà je coince et ensuite de cela, récupérer dans une variable le n° de la dernière ligne utilisée suite à ce "collage"

    Voici mon code actuel pour la selection des cellules et le copiage qui bien sur ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DerniereLigne = Sheets("Total Semaine").Range("A5").End(xlDown).Offset(1).Select
        Sheets(dat).Select
        Range(Cells(2, 1), Cells(Cells(Rows.Count, 5).End(xlUp).Row, 5)).Copy Sheets("Total Semaine").Range(DerniereLigne)

  2. #2
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    Bonjour,

    Moi je ferais comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    set DerniereLigne = Sheets("Total Semaine").Range("A5").End(xlDown).Offset(1)
        with Sheets("dat")
        .Range(.Cells(2, 1), .Cells(.Cells(.Rows.Count, 5).End(xlUp).Row, 5)).Copy DerniereLigne
        end with
    Tu ne peux pas faire un .select et ensuite le mettre dans une variable, ensuite la méthode offset renvoie un range qui est un objet, donc pour mettre en variable un objet il faut faire set avant le nom de la variable.

    De cette manière tu pourras utiliser directement ta variable objet, qui par la même mémorise aussi la feuille "total semaine".

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Par défaut
    Ah oui merci !! J'ai du mal avec ces variables !!

    Mais du coup j'ai mis une MsgBox qui ressort la valeur de DernièreLigne, comment je peux faire pour avoir non pas la valeur mais le numéro de la cellule correspondante ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    pour avoir l'adresse complète:

    le numéro de ligne:

    le numéro de colonne:


  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Par défaut
    Ah oui merci j'avais "contourné" le problème mais c'était moins propre !!


    En fait maintenant dans mon onglet dans la colonne A j'ai des dates au format jour/mois/année, comment à la place je pourrai renommer ces cellules avec "Semaine *" où * est le numéro de la semaine ?

  6. #6
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    à l'aide de la fonction "format()"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sheets("feuilleAModifier").name= "semaine" & format(Date, "ww")
    voir l'aide F1 sur format pour le fonctionnement complet de cette fonction bien utile.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Par défaut
    Mais avec cette ligne ça va renommer ma feuille non ?

    Car moi je chercher à remplacer le contenu de la colonne A

  8. #8
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    ha oui effectivement j'ai lu un peu vite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("A1").value="semaine" & format(Date, "ww")

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Par défaut
    Alors oui mais non ^^

    Je m'explique (merci déjà d'avoir répondu) dans ce que j'insert dans la colonne A j'ai des dates au format JJ/MM/AA, je voudrais en fait transformer la colonne A de ma sélection tout juste insérée par le numéro de la semaine correspondant à la date inscrite (rude je sais )

  10. #10
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    Est-ce que je pourrai voir ton code entier, que je voie un peu le contexte...

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Par défaut
    En fait j'ai réussi à bidouiller un peu ça donne ça (en reprenant la copie dont on parlait plus haut)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Set DerniereLigne = Sheets("Totale Semaine").Range("A5").End(xlDown).Offset(1)
        With Sheets(dat)
        .Range(.Cells(2, 1), .Cells(.Cells(.Rows.Count, 5).End(xlUp).Row, 5)).Copy DerniereLigne
        End With
        Set FinLigne = Sheets("Totale Semaine").Range("A" & DerniereLigne.Row).End(xlDown).Offset(1)
        MsgBox FinLigne.Row
     
        Sheets("Totale Semaine").Range("A" & DerniereLigne.Row & ":A" & FinLigne.Row).Value = "sem " & Format(Date, "ww")
    La MsgBox c'était pour voir si j'arrivais bien en bas ^^

    J'ai peut être parlé trop vite en fait car il renomme une cellule vide aussi en bas

  12. #12
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    Je vais répondre basiquement, pour la ligne DerniereLigne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Totale Semaine").Range("A" & DerniereLigne.Row).Value = "sem " & Format(Date, "ww")
    sauf que ce code modifie qu'une seule ligne, est-ce bien ce que tu veux ?

    quelle valeur différente de DernièreLigne avec finLigne a-tu voulu avoir ?

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Par défaut
    En fait ce que j'ai essayé c'est de modifier l'ensemble des données que je viens d’insérer.

    Ma variable derniereligne c'est la dernière ligne avant que je colle mes données et la finLigne c'est après les avoirs collées (c'est ce bloc que je veux modifier ^^)

  14. #14
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    je crois enfin avoir compris

    essaie ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Set derniereligne = Sheets("Totale Semaine").Range("A5").End(xlDown).Offset(1)
        With Sheets("dat")
        .Range(.Cells(2, 1), .Cells(.Cells(.Rows.Count, 5).End(xlUp).Row, 5)).Copy derniereligne
        End With
        Set FinLigne = Sheets("Totale Semaine").Range("A" & derniereligne.Row).End(xlDown)
        MsgBox FinLigne.Row
     
        With Sheets("Totale Semaine")
            For i = derniereligne.Row To FinLigne.Row
                .Range("A" & i).Value = "sem " & Format(.Range("A" & i).Value, "ww")
            Next
        End With

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Par défaut
    Alors ça fonctionne niquel merci !!!!

    Mais j'ai un autre problème ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       Sheets("Graph Totale").Select
       ActiveSheet.PivotTables("Tableau croisé dynamique1").ChangePivotCache _
       ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
       "P:\Desktop\BAOSTAT 2015\[BAOSTAT 2015.xlsm]Totale Semaine!R1C1:R" & FinLigne.Row & "C5", Version:=xlPivotTableVersion14)
    Ce code devrais mettre à jour mon tableau dynamique, quand je lance la macro ça mouline un moment (genre excel ne répond pas) puis plus rien, quand je vais voir à la main en faisant option -> changer la source de donnée, j'ai bien la nouvelle valeur mise à jour mais le tableau reste tel quel.

  16. #16
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    Bonjour,

    alors là, je ne vais pas pouvoir t'aider plus, je n'ai jamais touché auc TCD avec les macros.

    Je te conseil d'ouvrir un autre post, vu que c'est un problème différent...

    N'oublie pas de mettre

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Par défaut
    D'acc merci encore !!!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/03/2015, 19h31
  2. récupérer la memoire et tableau dynamique
    Par Guigui_ dans le forum Langage
    Réponses: 6
    Dernier message: 06/01/2003, 09h02
  3. AFFICHER UN TABLEAU DYNAMIQUE
    Par ghassenus dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2002, 15h19
  4. [Kylix] tableau dynamique
    Par sdoura2 dans le forum EDI
    Réponses: 1
    Dernier message: 31/10/2002, 09h57
  5. Réponses: 4
    Dernier message: 13/05/2002, 17h43

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