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 :

Macros ou code VBA [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Homme Profil pro
    technicien en programation
    Inscrit en
    Mars 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : technicien en programation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 50
    Par défaut Macros ou code VBA
    Bonsoir,
    J’ai un problème que je vais vous exposez pour une éventuel solution.
    Le code VBA que voici copie les donnes plus les formules de calcule utilisé de la première page et les colle dans la deuxième page dans la même feuille :
    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 test()
    '
    ' test Macro
    '
    ' Touche de raccourci du clavier: Ctrl+p
    '
        Range("A1:J17").Select
        Selection.Copy
        ActiveWindow.SmallScroll Down:=9
        Range("A19").Select
        ActiveSheet.Paste
        ActiveWindow.SmallScroll Down:=5
        Range("A26").Select
    End Sub
    Maintenant ce que je veux faire ce que à chaque exécution du macros que ça crée une nouvelle page au lieu de la deuxièmes à chaque fois, je m’y connais pas trop en VBA et je demande votre aide par ce que j’ai effectué des recherche et j’ai compris que je dois apprendre tous le langage VBA tant dis que je suis développeur en mode avancé c’est à dire (PHP, HTML, JS,APK, CSS, MySQL) dont je nait pas totalement terminé pour ne pas me dispersé je demande à vous expert en Excel pour m’aider à résoudre ce problème avec quelque code sans apprendre tous le langage.
    Merci d’avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Essayez ce code :

    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
     
     
    Sub CopierUneAireDansUneNouvelleFeuille()
     
    Dim OngletEnCours As Worksheet
    Dim NouvelOnglet As Worksheet
     
        Set OngletEnCours = ActiveSheet
        Set NouvelOnglet = ActiveWorkbook.Worksheets.Add(after:=Sheets(Sheets.Count))
     
        OngletEnCours.Range("A1:J17").Copy Destination:=NouvelOnglet.Range("A1")
     
        Set OngletEnCours = Nothing
        Set NouvelOnglet = Nothing
     
    End Sub
    Cordialement.

  3. #3
    Membre actif
    Homme Profil pro
    technicien en programation
    Inscrit en
    Mars 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : technicien en programation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 50
    Par défaut copie sur une nouvelle page
    Eric merci,
    Le code que vous m’avez envoyé je les testé et sa copie sur une nouvelle feuille mai mon objectif est que sa copie sur la même feuille mai sur une nouvel page.
    Merci

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    D'abord, un petit nettoyage de ton code (l'enregistreur automatique, c'est bien, mais il faut s'inspirer du code récupérer et non l'utiliser comme tel) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test()
    ' Touche de raccourci du clavier: Ctrl+p
        Range("A1:J17").Copy Range("A19")
    End Sub
    Pour ce que tu souhaites faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
        ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address
        ActiveSheet.HPageBreaks.Add Before:=Cells((ActiveSheet.HPageBreaks.Count+1)*19,1)
        Range("A1:J17").Copy Cells(ActiveSheet.HPageBreaks.Count*19,1)
        ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address
    End Sub

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par pipipicontrole Voir le message
    Visiblement Menhir vous a répondu.

    Cordialement.

  6. #6
    Membre actif
    Homme Profil pro
    technicien en programation
    Inscrit en
    Mars 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : technicien en programation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 50
    Par défaut copie sur une nouvelle page
    Merci a Menhir,
    Apres le test de votre code sa active plus 18000 page mai aucun donné n’est copier ni les formule par ce que l’objectif c’est de récupéré c’est traitement et donnée sur une nouvelle page enfin de remplacé les donnée copier manuelement et directement les champs calculé affiche le résultat et la page en question est considéré comme une nouvelle enregistrement seulement il y a une différence de donnée entre la page actuel et la page copier.
    Merci

  7. #7
    Membre actif
    Homme Profil pro
    technicien en programation
    Inscrit en
    Mars 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : technicien en programation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 50
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Visiblement Menhir vous a répondu.

    Cordialement.
    mai lui son code ne repond pas a mes besoin vue que sa active plus de 18000 page mai aucun donnée n'est copier

  8. #8
    Membre actif
    Homme Profil pro
    technicien en programation
    Inscrit en
    Mars 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : technicien en programation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 50
    Par défaut
    Citation Envoyé par Menhir Voir le message
    D'abord, un petit nettoyage de ton code (l'enregistreur automatique, c'est bien, mais il faut s'inspirer du code récupérer et non l'utiliser comme tel) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test()
    ' Touche de raccourci du clavier: Ctrl+p
        Range("A1:J17").Copy Range("A19")
    End Sub
    Pour ce que tu souhaites faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
        ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address
        ActiveSheet.HPageBreaks.Add Before:=Cells((ActiveSheet.HPageBreaks.Count+1)*19,1)
        Range("A1:J17").Copy Cells(ActiveSheet.HPageBreaks.Count*19,1)
        ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address
    End Sub
    Apres le test de votre code sa active plus 18000 page mai aucun donné n’est copier ni les formule par ce que l’objectif c’est récupéré c’est traitement et donnée sur une nouvelle page enfin de remplacé les donnée copier et directement les champs calculé affiche le résultat et la page en question est considéré comme nouvelle enregistrement seulement il y a une différence de donnée entre la page actuel et la page calculé.
    Merci

  9. #9
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par pipipicontrole Voir le message
    Apres le test de votre code sa active plus 18000 page mai aucun donné n’est copier ni les formule
    Je suis parti du principe que tu devais avoir un fichier propre, ce qui, visiblement, n'est pas le cas.
    Je pense que tu as du copier des trucs dans une colonne entière ou quelque chose comme ça. Il y a sans doute des parasites en dehors de la zone utilisée.

    Ne sachant pas quelle forme ont tes données et ce que contient la zone "A1:J17", j'étais parti sur l'utilisation d'un UsedRange qui semblait le plus sûr.
    Mais s'il y a des parasites à l'extérieur de la zone utile, ce n'est pas possible de procéder ainsi.

    Il faudrait que tu fasses une copie d'écran de la zone "A1:J17" pour voir sur quoi il est possible de s'appuyer pour repérer les fins de zone.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Ce que je comprends, c'est qu'on copie A1:J17 en fin de tableau et on ajoute un saut de page.

    Est-ce que j'ai bien pigé ?

  11. #11
    Membre actif
    Homme Profil pro
    technicien en programation
    Inscrit en
    Mars 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : technicien en programation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 50
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Je suis parti du principe que tu devais avoir un fichier propre, ce qui, visiblement, n'est pas le cas.
    Je pense que tu as du copier des trucs dans une colonne entière ou quelque chose comme ça. Il y a sans doute des parasites en dehors de la zone utilisée.

    Ne sachant pas quelle forme ont tes données et ce que contient la zone "A1:J17", j'étais parti sur l'utilisation d'un UsedRange qui semblait le plus sûr.
    Mais s'il y a des parasites à l'extérieur de la zone utile, ce n'est pas possible de procéder ainsi.

    Il faudrait que tu fasses une copie d'écran de la zone "A1:J17" pour voir sur quoi il est possible de s'appuyer pour repérer les fins de zone.
    Nom : forume.PNG
Affichages : 206
Taille : 35,2 Ko
    Voici la plage en haut de cette plage il y a juste le logo de l'entreprise.
    Je dois pouvoir copies tous sa sur la nouvelle page automatiquement et je remplace manuellement les donnée.

  12. #12
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    La zone A:1:J17 est supposée contenir 17 lignes. Dans ta copie d'écran, je n'en vois que 11.

    Je vais essayer de faire avec ça mais pas sûr que ça marche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
        Dim Fin As Long
        Fin = (Int(Range("B" & Rows.Count).End(xlUp).Row / 18.0) + 1) * 18
        Range("A1:J17").Copy Range("A" & (Fin + 1))
    End Sub
    Citation Envoyé par Eric KERGRESSE Voir le message
    Ce que je comprends, c'est qu'on copie A1:J17 en fin de tableau et on ajoute un saut de page.
    Est-ce que j'ai bien pigé ?
    N'ayant aucune référence précise, j'utilisais les saut de page pour pouvoir compter les pages.
    Mais pour pouvoir compter les sauts de page, il faut qu'ils soit dans la zone d'impression. D'où la première et dernière lignes de code.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Menhir Voir le message
    N'ayant aucune référence précise, j'utilisais les saut de page pour pouvoir compter les pages.
    Mais pour pouvoir compter les sauts de page, il faut qu'ils soit dans la zone d'impression. D'où la première et dernière lignes de code.
    Bonsoir Menhir,

    Si chaque fois qu'on copie la zone, on fait un saut de page, cela devrait fonctionner dans tous les cas puisque la hauteur de la zone imprimable est chaque fois inférieure à une page normale ? Es-tu d'accord ?

    Cordialement.

    Compte tenu que la colonne de référence est visiblement la colonne 2, voilà la code que j'écrirais

    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
     
    Option Explicit
     
    Sub CopierAvecSautDePage()
     
    Dim DerniereLigne As Long
     
        With ActiveSheet
             DerniereLigne = .Cells(.Rows.Count, 2).End(xlUp).Row
             .Range("A1:J17").Copy Destination:=.Range("A" & DerniereLigne + 1)
             DerniereLigne = .Cells(.Rows.Count, 2).End(xlUp).Row
             ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=.Cells(DerniereLigne + 1, 1)
        End With
     
    End Sub
    Dernière modification par AlainTech ; 29/01/2017 à 20h38. Motif: Fusion de 2 messages

  14. #14
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Si chaque fois qu'on copie la zone, on fait un saut de page, cela devrait fonctionner dans tous les cas puisque la hauteur de la zone imprimable est chaque fois inférieure à une page normale ? Es-tu d'accord ?
    Sauf s'il y a des parasites disséminés sur la feuille de calcul qui empêchent de définir correctement la zone à prendre en compte pour la zone d'impression.
    Parce que si la zone d'impression est disproportionnée, elle va contenir aussi les sauts de page naturels (non forcés) et les données copiées vont se retrouvées à perpet.
    Et j'ai bien l'impression que c'est le cas ici.

  15. #15
    Membre actif
    Homme Profil pro
    technicien en programation
    Inscrit en
    Mars 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : technicien en programation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 50
    Par défaut
    Ok j’ai testé le code effectivement sa marche pas mai je dois faire comment pour bien faire déjà vous connaissez l’objectif un exemple réel en image donc vous devez pouvoir m’aidez.
    Merci vraiment pour m’avoire accordé votre temp.

  16. #16
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Une solution dans ce lien :


    Sauts de page automatiques

  17. #17
    Membre actif
    Homme Profil pro
    technicien en programation
    Inscrit en
    Mars 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : technicien en programation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 50
    Par défaut Solution potentiel
    Merci vraiment pour m’avoir accordé votre temps.
    En y réfléchissant je saie ce dont j’ai besoin :
    1 la syntaxe pour crée une nouvelle page en VBA Excel.
    Voici la solution que j’ai trouvée pour que vous regardiez la faisabilité si possible en me guidant :
    Dans mon code initiale j’ai vue qu’apprêt la syntaxe du copie, une plage bien spécifique est sélectionné et activé ; donc avec le syntaxe que vous allez me donner je vais créer une nouvelle page l’activé et collé ; pour finir à chaque exécution du macros sa créé automatiquement une nouvelle page en collant à chaque fois les même infos et je nais plus qu’a changé les données.
    Merci d’avance.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
    '
    ' test Macro
    '
    ' Touche de raccourci du clavier: Ctrl+p
    '
        Range("A1:J17").Select
        Selection.Copy
        ActiveWindow.SmallScroll Down:=9
        Range("A19").Select
        ActiveSheet.Paste
     
    End Sub
    code initial

  18. #18
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par pipipicontrole Voir le message
    En y réfléchissant je saie ce dont j’ai besoin :
    1 la syntaxe pour crée une nouvelle page en VBA Excel.
    Visiblement :

    - Vous ne regardez pas toutes les solutions proposées.
    - Vous ne répondez pas à toutes les questions posées.

    Bon courage à vous. Je me désabonne de cette discussion.

    Cordialement.

  19. #19
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je suis d'accord avec Eric. J'ai vraiment l'impression de perdre mon temps pour rien.

    Tu remets ton code initial alors que je te l'ai corrigé dans le message #4.
    Tu demandes une solution alors que je t'ai donné dans le message #12 un code que visiblement tu n'as pas testé.

    Ca me donne moi aussi une furieuse envie de te laisser te débrouiller tout seul.

    Dans mon code initiale j’ai vue qu’apprêt la syntaxe du copie, une plage bien spécifique est sélectionné et activé ; donc avec le syntaxe que vous allez me donner je vais créer une nouvelle page l’activé et collé ; pour finir à chaque exécution du macros sa créé automatiquement une nouvelle page en collant à chaque fois les même infos et je nais plus qu’a changé les données.
    Le problème est qu'avec les données que tu fournis, il est impossible de déterminer combien de "pages" se trouvent déjà dans ta feuille Excel et donc qu'il est impossible de savoir où positionner la nouvelle page.

    Quant à utiliser les Select, c'est la plupart du temps inutile dans le code.
    C'est surtout utilisé par ceux qui ne savent faire rien d'autre que de plaquer sans le comprendre le code généré par l'enregistreur automatique.

    donc vous devez pouvoir m’aidez.
    Non, nous ne sommes pas tes employés ni tes débiteurs, nous n'avons donc aucune obligation à aider quiconque.

  20. #20
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Citation Envoyé par pipipicontrole Voir le message
    Apres le test de votre code sa active plus 18000 page mai aucun donné n’est copier ni les formule
    Est-ce que tu mets le code de Menhir dans un module standard ?

    Pour creer un module standard, tu vas dans Menu Insertion / Module

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Toutes versions] Macro ou code VBA pour effacer des caracteres et aller a la ligne dans un meme cellule
    Par ghisunit dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 07/04/2012, 15h29
  2. [XL-2007] Macro ou code VBA d'un formule Gauche et Recherche
    Par ghisunit dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/03/2012, 22h36
  3. [AC-2007] convertir mes macros en code VBA.
    Par solaar dans le forum IHM
    Réponses: 5
    Dernier message: 06/08/2009, 18h50
  4. convertir une macro en code vba
    Par misig dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 12/12/2007, 23h54
  5. Prob pour exporter une macro en code VBA
    Par electrosat03 dans le forum Access
    Réponses: 6
    Dernier message: 04/02/2006, 19h15

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