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 une plage variable d'un onglet à l'autre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Responsable d'exploitation
    Inscrit en
    Mars 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Responsable d'exploitation
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2014
    Messages : 24
    Par défaut Copier une plage variable d'un onglet à l'autre
    Bonjour,

    Je n'arrive pas à écrire un code pourtant assez simple où je demande dans un message box un chiffre (ça OK) qui me permettrais de sélectionner la plage entre les colonnes A et F et de la dernière ligne et remonter de - ma variable.
    Comment rendre négative ma variable et faire la sélection du range.

    Merci de votre aide

  2. #2
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Bonjour,

    Tu auras plus de chances d'obtenir ta réponse sur le forum VBA.
    Pourrais-tu déjà nous donner le code que tu as ? Ou son début ?

  3. #3
    Membre averti
    Homme Profil pro
    Responsable d'exploitation
    Inscrit en
    Mars 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Responsable d'exploitation
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2014
    Messages : 24
    Par défaut
    Tu as raison merci
    je ne retrouve plus comment on insère correctement du code

  4. #4
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Alt-F11 ?

  5. #5
    Membre averti
    Homme Profil pro
    Responsable d'exploitation
    Inscrit en
    Mars 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Responsable d'exploitation
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2014
    Messages : 24
    Par défaut
    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
    22
    23
    Dim jours As Long
     
     
    Nom = InputBox("Combien de jours concernés : ", "Jours")
     
     
     
     
    Dim Maplage As Range
    Dim DernLigne As Long
    'dernière ligne colonne A
    DernLigne = Range("A" & Rows.Count).End(xlUp).Row
    i = -jours
    'dernière colonne ligne 1
    'DernColonne = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
    Range(DernLigne, "f" & i).Select
     
    Selection.Copy
     
      Sheets("Envoi").Select
    Range("A12").Select
     
    Selection.Paste

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,

    Que vaut jours ? Tu ne l'écris jamais. Tu créés une InputBox (Nom), mais tu n'utilises jamais Nom ensuite. Attention, l'Inputbox renvoie une chaine de caractère --> à convertir si on veut un nombre.

    Quelle est la plage de cellule que tu veux sélectionner. Pour une plage de cellule, voici plusieurs syntaxes possibles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A1:B10")
    Range(Cells(1, 1), Cells(10, 2))
    Avec des variables (par ex. si i = 10) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A1:B" & i)
    Range(Cells(1, 1), Cells(i, 2))
    Mais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(DernLigne, "f" & i

    ne va pas. DernLigne est un entier correspondant à une ligne, ce n'est pas un cellule. i est-il négatif ? Il n'existe pas de cellule avec une ligne négative !

    Ensuite, évite au maximum d'utiliser Select, Selection, Activate, ActiveSheet etc ... Ceci est donné par l'enregistreur de macro, mais ensuite, il faut travailler le code.
    N'écris pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets("ma feuille").Activate
    ActiveSheet.Range("A1").Select
    Selection.Copy

    Mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("ma feuille").Range("A1").Copy
    Deplus, avec la méthode Copy, tu as la syntaxe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("feuille source").Range("A1").Copy destination:=Sheets("feuille de destination").Range("A1")
    Cela allègera ton code.

Discussions similaires

  1. [XL-2010] copier une plage de donner de taille variable
    Par kevin00012 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/05/2017, 02h18
  2. [XL-2013] Copier une plage de cellules sur un emplacement variable
    Par Nicolas751 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/04/2016, 14h08
  3. [XL-2010] Création TCD sur onglet variable (a partir d'une plage variable)
    Par WilliamAd dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/06/2012, 10h42
  4. Copier une plage de données vers un onglet d'un autre document
    Par morgane07 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/04/2010, 15h59
  5. copier des plages variables de plusieurs feuilles vers une seule
    Par irene15 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 22/06/2007, 13h44

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