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 :

Créer une boucle VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2017
    Messages : 3
    Par défaut Créer une boucle VBA
    Bonjour,

    Je dois automatiser un fichier excel mais mes compétences techniques sont assez limitées.

    J'ai un fichier qui contient plusieurs feuilles.

    Sur une des feuilles je dois me positionner en cellule A3 copier un code produit, le coller en valeur en cellule A1 afin que cela calcule des données sur une autre feuille.

    Les données calculées sur cette feuille doivent ensuite être collées sur une autre. Et ainsi de suite pour tous les codes produits. Cela commence en A3 et fini en A393.

    Je cherche un code afin de ne pas avoir à faire les copier/coller à la main.

    Voici le code avec l'enregistreur de macros, en faisant l'opération sur quelques lignes :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Sub Macro5()
    '
    ' Macro5 Macro
    '
     
    '
        Range("E3").Select
        Application.CutCopyMode = False
        Selection.Copy
        Range("A2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("IRIS").Select
        Range("BT1:BV1").Select
        Range(Selection, Selection.End(xlDown)).Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("test").Select
        Range("E1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("H1").Select
        Sheets("Param").Select
        Range("E4").Select
        Application.CutCopyMode = False
        Selection.Copy
        Range("A2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("IRIS").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("test").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("Param").Select
        Range("E5").Select
        Application.CutCopyMode = False
        Selection.Copy
        Range("A2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("IRIS").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("test").Select
        Range("K1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("N1").Select
        Sheets("Param").Select
    End Sub
    Merci de votre aide !

  2. #2
    Membre émérite Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 601
    Par défaut
    Bonjour,

    Sur le fond rien de compliqué mais on va y aller par étapes.

    D'abord voici comment attribuer à une cellule la valeur d'une autre cellule.

    Ton code avec l'enregistreur de macro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Range("E3").Select
        Application.CutCopyMode = False
        Selection.Copy
        Range("A2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Alors OK ça marche mais c'est lent et tu perds ce que tu as éventuellement dans le presse papier.

    Il te suffit de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("E3")=Range("A2")
    C'est tout mais ça reste incomplet.
    Comme le nom de la feuille n'est pas précisé c'est sur la feuille active (celle ouverte devant toi au moment du lancement du code) que le code s'exécutera. Il est nettement préférable de préciser le nom des feuilles source et destination.

    Pour insérer la valeur d'une cellule dans une autre;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("IRIS").Range("E3")=Sheets("IRIS").Range("A2")
    Ici la valeur de ta cellule "E3" de ta feuille "IRIS" prend la valeur de ta cellule "A2" de ta feuille "IRIS" (même feuille donc).

    Pour travailler sur plusieurs feuilles le principe est le même

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("IRIS").Range("E3")=Sheets("test").Range("A2")
    Ici la valeur de ta cellule "E3" de ta feuille "IRIS" prend la valeur de ta cellule "A2" de ta feuille "test" (feuille différente donc).

    Ah, et pour travailler sur une zone de ta feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("IRIS").Range("E3:J5").Value=Sheets("test").Range("A2:F4").Value
    Ici la valeur des cellules de ta zone "E3:J5" de ta feuille "IRIS" prend la valeur des cellules de ta zone "A2:F4" de ta feuille "test" (feuille différente donc).

    Voilà. Pour le moment on ne traite pas encore la boucle mais je te laisse déjà faire ces premières corrections.

    J'ai repris le nom de tes feuilles mais pas forcément les cellules voulues. A toi de corriger. Je te montre uniquement la syntaxe.

  3. #3
    Membre émérite Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 601
    Par défaut
    As-tu fais les adaptations ?
    Peux-tu poster ta nouvelle macro ?
    Ensuite on voit la problématique de la boucle.

Discussions similaires

  1. [XSLT] Comment créer une boucle
    Par Kefass dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 28/02/2007, 21h57
  2. [PHP-JS] Comment créer une boucle avec des headers
    Par djinnwatcher dans le forum Langage
    Réponses: 10
    Dernier message: 17/07/2006, 15h48
  3. Comment créer une boucle ?
    Par kikica dans le forum Langage
    Réponses: 5
    Dernier message: 15/03/2006, 21h02
  4. [XSLT]créer une boucle
    Par fraoustin dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 11/01/2005, 14h13

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