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 :

Copier-coller en fonction de valeurs en vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Par défaut Copier-coller en fonction de valeurs en vba
    Bonjour,

    N'étant même pas débutant ,d'habitude je glane une ligne par ci par là pour bidouiller une macro.
    Sauf qu'aujourd'hui j'ai besoin de quelqu'un pour m'aider à comprendre et à réaliser des lignes me permettant d'automatiser le traitement de tableaux.

    Copier/coller en fonction de valeurs, puis réalisation de graphs en fonction des données récoltées.

    le hic c'est que que mes bidouilles ne font plus l'affaire , y a t il une âme patiente et charitable dans les parrages ?

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut PersianPrince et le forum
    N'étant même pas débutant ,d'habitude je glane une ligne par ci par là pour bidouiller une macro.
    C'est comme ça qu'on débute. Et avec les macros "apprentissages" (Menu Outils>>Macros>>Nouvelle macro) : tu lances la nouvelle macro et tu effectues les opérations que tu veux faire en macro. Puis tu vas regarder le code.

    Faire le coach n'est pas le but d'un forumeur. Mais quelqu'un te répondra s'il est intéressé. Par contre, avec des questions précises, des données et ce que doit faire ta macro et les bouts de code que tu as conçu, on peut t'aider à faire des macros correctes.
    A+

  3. #3
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Par défaut
    pour être plus clair dans mes propos voici un exemple de tableau a travailler

    concernant l'état de mes connaissance je connais les application copy et paste grâce à l'enregistreur de macro, en revanche je ne sais pas conditionner une copie en fonction d'une ou plusieurs conditions.

    Pour ce qui est du graphique par vba là c'est le néant.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut PersianPrince et le forum
    concernant l'état de mes connaissance je connais que ce que tu as mis dans le poste et ce n'est rien qui peut indiquer ce que tu veux faire.
    A+

  5. #5
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Par défaut
    En fait j'aurais une dizaine de tableaux identiques à ceux du fichier à travailler.
    Le problème est que les jours d'absence pouvant varier selon les tableaux,j'ai besoin de selectionner mes plages à copier en fonction du contenu des cellules.
    Dans l'exemple du fichier on supprime d'office le dimanche qui se trouve en colonne H
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Range("H2:H51").Select
        Selection.Delete Shift:=xlToLeft
    Je souhaite ensuite copier les plages fonctions du contenu c'est à dire avec la colonne concernée différente de 0.

    je ne connais que le copier coller exemple :
    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
    16
    17
    18
    19
    20
    21
      Range("A2:B2,E2:F2").Select
        Range("E2").Activate
        Selection.Copy
        Sheets("Ma").Select
        ActiveSheet.Paste
        Sheets("Tous les compteurs").Select
        Range("A3:B3,E3:F3").Select
        Range("E3").Activate
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Ma").Select
        Range("J7").Select
        ActiveSheet.Paste
        Sheets("Tous les compteurs").Select
        Range("A11:B11,E11:F11").Select
        Range("E11").Activate
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Ma").Select
        Range("J8").Select
        ActiveSheet.Paste
    .

    le but de selectionner les plages en fonction des valeur est d'avoir des graphes avec courbes continues ou des barres graphes sans 'trous' contrairement à ce qui apparaît dans le fichier en exemple.
    Je ne sais pas si je suis clair ...

    Ayant été repris par le modérateur ( merci pour les précisions), je précise que j'ai besoin d'une piste pour réussir a faire un copier coller conditionné à une ou des valeurs.
    quelqu'un connaît il un moyen simple d'y parvenir ?
    Par avance merci pour votre aide

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut PersianPrince et le forum
    Le problème est que les jours d'absence pouvant varier selon les tableaux,j'ai besoin de selectionner mes plages à copier en fonction du contenu des cellules.
    Ça n'explique qu'à quelqu'un qui connaît le travail à effectuer.
    Je souhaite ensuite copier les plages fonctions du contenu c'est à dire avec la colonne concernée différente de 0.
    C'est du chinois !
    On ne travaille pas avec toi ! On n'utilise pas ton fichier, et tu ne nous expliques rien. Oui, je sais, c'est évident... pour toi.
    Ton lambeau de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
    Sheets("Tous les compteurs").Range("A2:B2,E2:F2").Copy
    Sheets("Ma").Select
    ActiveSheet.Paste
    'on peut pas faire plus, pas assez d'infos
    Sheets("Tous les compteurs").Range("A3:B3,E3:F3").Copy Sheets("Ma").Range("J7")
    Sheets("Tous les compteurs").Range("A11:B11,E11:F11").Copy Sheets("Ma").Range("J8")
    End Sub
    C'est la même chose, mais en plus court.
    Là, je sais par exemple que je dois copier les Plages A3:B3 et E3:F3 de la feuille "Tous les compteurs" sur la feuille "MA" de J7 à M7. Idem pour A11:B11 et E11:F11 qui se retrouvent en J8:M8.

    Ce qui me donnerait un algo du type : copier uniquement les valeurs non nulles, des Colonnes A à H de "tous les compteurs" des lignes de 3 à ??? par ligne sur la page "MA" à partir de J7.

    Mais je ne sais même pas si ce n'est pas uniquement des lignes 3 et 11 (et dans ce cas, pourquoi ne pas utiliser des formules ?) où si c'est plus complexe.
    Dans les forums on travaille sur des problèmes concernant les logiciels. Pas sur l'exploitation particulière de données dont on a rien à faire.
    C'est bien de donner le but final (ça évite de partir sur des solutions partielles inapplicables sur l'ensemble), mais il faut travailler par étape.
    Là, je pense distinguer 2 parties : une acquisition des données et 1 mise en graphique. Pour le reste, c'est le néant.
    A+

  7. #7
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Par défaut
    le tableau à travailler se presente sous la forme de colonnes indiquant les données pour les 7 jours de la semaine et d'une colonne total .
    il se compose toujours de 51 lignes au total.

    Suivant les cas ce tableau aura des colonnes inutiles (les fameuses absences) ainsi que la colonne H du dimanche.
    Toutes les cellules concernées seront à 0 (en temps ou en valeurs numérique).

    Mon but est en fait de recopier par exemple la plage B3:G3 mais sans les cellule dont la valeur est zéro.
    pour cela j'ai besoin d'effacer les colonnes inutiles (d'absence) pour ne recopier que les plages où se trouvent une donnée utile.

    Je recopie ainsi plusieurs plages depuis la feuilles "tous les compteurs" sur la feuille "MA" afin de reconstituer de nouveaux mini tableaux sur cette feuille.

    C'est effectivement la partie acquisition de données. Pour l'instant les plages à recopier sont fixes; exemple création d'un mini tableau en J7 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("Tous les compteurs").Range("A3:B3,E3:F3").Copy Sheets("Ma").Range("J7")
    Sheets("Tous les compteurs").Range("A11:B11,E11:F11").Copy Sheets("Ma").Range("J8")
    Ce que je ne sais pas faire c'est éliminer ces fameuse données inutiles pour créer la totalité de mes mini tableaux.

    J'espère m'exprimer un peu plus clairement

Discussions similaires

  1. [XL-2003] Copier coller en fonction de non vide d'une colonne adjacente
    Par Vadorblanc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/03/2011, 20h43
  2. Copier coller en fonction de variable
    Par teddy72000 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/02/2011, 04h07
  3. Réponses: 2
    Dernier message: 18/02/2011, 09h58
  4. Syntaxe Copier/coller vers un autre fichier dans VBA.
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/01/2009, 10h49
  5. Copier Coller du Code dans une macro VBA
    Par ted the Ors dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/04/2008, 16h11

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