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

Vos contributions VB6 Discussion :

VBA: Boucle Case -choix multiples à répéter sur plusieurs cas.


Sujet :

Vos contributions VB6

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut VBA: Boucle Case -choix multiples à répéter sur plusieurs cas.
    Bonjour,

    Je réalise un code qui me permet de copier coller des cellules (A4:I17) Sur la même feuille. Pour cela, j'ai une variable: Nb_batiments qui va déterminer combien de fois je dois copier coller ma sélection.
    par exemple, Si Nb_Batiments = 4, je copie colle 4 fois ma plage de cellule. Je renomme également une cellule de cette plage de données à chaque fois que copie/Colle.
    J'ai effectué le code suivant qui fonctionne très bien:

    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
    Select Case Nombre_batiments
     
    Case 2 ' Feuilles informations bâtiments 1 et 2 Affichées et 3 4 masquées
        Sheets("Informations batiments").Range("A4:I17").Copy _
        Destination:=Sheets("Informations batiments").Range("A19:I32")
        Sheets("Informations batiments").Range("A19").Value = "Batiment 2"
     
    Case 3 ' Feuilles informations bâtiments 1 2 3 Affichés et 4 masquée
        Sheets("Informations batiments").Range("A4:I17").Copy _
        Destination:=Sheets("Informations batiments").Range("A19:I32")
        Sheets("Informations batiments").Range("A19").Value = "Batiment 2"
     
        Sheets("Informations batiments").Range("A4:I17").Copy _
        Destination:=Sheets("Informations batiments").Range("A34:I47")
        Sheets("Informations batiments").Range("A34").Value = "Batiment 3"
     
    Case 4 ' Feuilles informations Batiments 1 2 3 4 affichées
        Sheets("Informations batiments").Range("A4:I17").Copy _
        Destination:=Sheets("Informations batiments").Range("A19:I32")
        Sheets("Informations batiments").Range("A19").Value = "Batiment 2"
     
        Sheets("Informations batiments").Range("A4:I17").Copy _
        Destination:=Sheets("Informations batiments").Range("A34:I47")
        Sheets("Informations batiments").Range("A34").Value = "Batiment 3"
     
        Sheets("Informations batiments").Range("A4:I17").Copy _
        Destination:=Sheets("Informations batiments").Range("A50:I63")
        Sheets("Informations batiments").Range("A50").Value = "Batiment 4"
     
    End Select
    Cependant, Je trouve ca lourd, et je pense que se code peut être simplifié. J'apprend le VBA sur le tas et je ne sais pas comment je pourrais faire pour que certaines actions que je répète dans les cas 2 3 4 soit faites si Nb_Batiments = 2 ou 3 ou 4. Est ce que quelqu'un aurait une idée ?
    J'avais pensé utiliser : Case 2,3,4 mais dans ce cas la lorsque Nb_batiment = 4, je n'obtiens qu'une fois le copier/coller

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Pourquoi ne pas faire une fonction pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets("Informations batiments").Range("A4:I17").Copy _
    Destination:=Sheets("Informations batiments").Range(cible)
    Sheets("Informations batiments").Range("A50").Value = infoBat
    Ainsi, tu peux faire un switch/case en fonction de ton cas, et juste appeler la fonction avec les paramètres voulus.

    Cordialement,
    Patrick Kolodziejczyk.

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Je pense que je pourrais en effet le faire avec une fonction. Mon plus gros problème avec la fonction est que je souhaite faire les copier/coller sur différentes cellules (cellule A50 pour choix 4 mais cellule A19 pour choix 2 ) selon le choix du Nb_batiment et je ne sais donc pas comment faire varié mes cellules.

    Merci pour cette réponse.

Discussions similaires

  1. [AC-2003] Traduction en VBA d'une requête Sélection SQL sur plusieurs tables
    Par Pucho Faritas dans le forum VBA Access
    Réponses: 9
    Dernier message: 29/10/2009, 10h32
  2. [VBA-E]Insertion d'un enregistrement sur plusieurs lignes
    Par gantec dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/03/2007, 11h43
  3. [VBA-E] Comment appliquer une macro sur plusieurs cellules
    Par jeanpierreco dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 25/01/2007, 10h54
  4. Réponses: 2
    Dernier message: 08/06/2006, 06h29

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