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 :

boucle avec modulo [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 288
    Par défaut boucle avec modulo
    Bonjour,

    je suis en train d'essayer de comprendre comment écrire une macro qui fait de la mise en page, j'écris une petite macro de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub test()
     
    Range("B5") = Workbooks("classeur2.xlsx").Sheets("Feuil1").Range("A2").Value
    Range("M6") = Workbooks("classeur2.xlsx").Sheets("Feuil1").Range("B2").Value
    Range("Q7") = Workbooks("classeur2.xlsx").Sheets("Feuil1").Range("E2").Value
     
    End Sub
    Cela marche bien pour la première ligne du classeur 2, je vais intégrer cela dans une boucle pour traiter 10 lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim i as Integer
    For i = 1 to 10
    ...
    Next i
    Je veux faire à chaque incrémentation de i --> modulo 5 sur B5, M6, Q7 --> B10, M11, Q12 et modulo 1 sur A2, B2, E2 --> A3, B3, E3

    J'imagine devoir déclarer mes cellules comme variable ? et ensuite ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    je pense qu'on a une erreur de signification dans ton énoncé

    modulo 1
    un modulo c'est un reste de division entière...

    de plus, un coup tu tapes sur les colonnes B, M et Q puis a nouveau sur A,B,C
    B5, M6, Q7 --> B10, M11, Q12 et modulo 1 sur A2, B2, E2 --> A3, B3, E3
    Tu pourrais nous donner la liste des 3 premiers cas selon ton approche stp ?

    Ca reste nécessaire pour qu'on comprenne vraiment où tu veux en venir

    Merci
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 288
    Par défaut
    oui bien sur,

    Dans mon test pour voir comment ça marche, je veux traiter 10 lignes de ma feuille "Feuil1" qui contiennent des infos à mettre en page dans ma "Feuil2" (feuille courante)

    Ces infos sont pour la 1ere ligne de "Feuil1" en A2, B2 et E2, sur la seconde ligne elles seront donc en A3, B3 et E3 et ainsi de suite. (c'est ce que j'ai appelé modulo 1)

    Je veux les mettre dans ma "Feuil2" respectivement pour la ligne 1 de "Feuil1" (A2, B2 et E2) en B5, M6 et Q7

    Pour la ligne suivante de "Feuil1" (A3, B3 et E3 ) en B10, M11 et Q12 et ainsi de suite. (c'est ce que j'ai appelé modulo 5)

    J'espère avoir été plus clair

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Ok,

    on aurait un code de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Delta As Integer
    Delta=5
    For I=2 To 11
    Range("B" & Delta) = Workbooks("classeur2.xlsx").Sheets("Feuil1").Range("A" & I).Value
    Range("M" & Delta+1) = Workbooks("classeur2.xlsx").Sheets("Feuil1").Range("B" & I).Value
    Range("Q" & Delta +2) = Workbooks("classeur2.xlsx").Sheets("Feuil1").Range("E" & I).Value
    Delta=Delta+5
    Next I
    On peut même envisager de virer Delta et de faire tous les calculs à partir de I.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 288
    Par défaut
    C'est parfait et formateur, merci

    dans le même esprit je voudrai au passage dans ma boucle copier aussi l'image qui se trouve sur chaque ligne de "Feuil1" classeur2.xlsx en ("A" & I) vers "B" & Delta

    Là cela se complique pour moi,

    j'ai fait un test (en galérant) pour supprimer l'image dans une boucle en intégrant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    For Each shap In ActiveSheet.Shapes
        If shap.TopLeftCell.Row = i Then shap.Delete
    mais pour la copier ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Essaie de générer du code à partir de l'enregistreur de macro, et tu trouveras ces subtilités de copie/collage d'images
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

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

Discussions similaires

  1. [DEBUTANT] sortir d'une boucle avec un touche particulière
    Par thibouille dans le forum Débuter
    Réponses: 4
    Dernier message: 25/10/2005, 06h44
  2. Probleme de boucle avec des processus sous UNIX
    Par sebastieng dans le forum POSIX
    Réponses: 6
    Dernier message: 15/10/2005, 18h57
  3. Boucle avec un TIBDataSet
    Par SebCBien dans le forum Bases de données
    Réponses: 4
    Dernier message: 12/09/2004, 17h33
  4. Boucle avec variable à incrémenter
    Par snoop dans le forum Linux
    Réponses: 2
    Dernier message: 19/03/2004, 11h07
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

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