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 en VBA avec 2 variables dont une est le numéro de feuille


Sujet :

Macros et VBA Excel

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour, je cherche à créer une boucle avec 2 variables dont la 2eme est le numéro d'une feuille dans mon fichier.
    je voudrais dans un premier temps que cela copie la valeur E2 de la première feuille contenant (FS) et que cela la colle dans la cellule B4, puis la valeur B2 dans la cellule C4 etc...
    PUIS que cela se boucle pour chaque feuille contenant "(FS)"ou finissant par "(FS)" peu importe
    (ou au pire je sais que les feuilles contenant "(FS)" seront toutes les feuilles paires de mon fichiers (2,4,6,...,30))
    j'en suis là pour le moment mais toujours pas de résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim ws
    For Each ws In Worksheets
    If Right(Sheets(ws).Name, 4) = "(FS)" Then
               Sheets(ws).Select
     Dim K As Integer
        For K = 4 To 18
    Sheets("Récapitulatif").Range("B" & K) = Sheets(ws).Range("E2").Value 'Nom du client'
    Sheets("Récapitulatif").Range("C" & K) = Sheets(ws).Range("B2").Value 'N° de dossier''
     
    Next K
           Else
           End If
        Next ws
    merci d'avance pour votre aide.
    PS: pour le copier/coller d'une feuille c'est bon, c'est pour la boucle des feuilles suivantes que ça coince.

    Pour être plus clair je pense, je voudrais afin d'éviter d'écrire le code (que j'ai allégé sinon il y a de B à I) pour chaque ligne (donc 15 fois) faire une boucle pour les lignes 4 à 18
    Les feuilles à boucler sont les feuilles 2,4,6,...,30 (toutes les feuilles paires)
    PS: pour infos, les feuilles paires contiennent toutes "(FS)" à la fin de leur nom

    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
    'Ligne 4'
    Dim K As Integer
        For K = 4 To 18
    Sheets("Récapitulatif").Range("B" & K) = Sheets(2).Range("E2").Value 'Nom du client'
    Sheets("Récapitulatif").Range("C" & K) = Sheets(2).Range("B2").Value 'N° de dossier''
    Next K
     
    'Ligne 5'
    Dim K As Integer
        For K = 4 To 18
    Sheets("Récapitulatif").Range("B" & K) = Sheets(4).Range("E2").Value 'Nom du client'
    Sheets("Récapitulatif").Range("C" & K) = Sheets(4).Range("B2").Value 'N° de dossier''
    Next K
     
    'et ça jusqu'à la ligne 18'

  2. #2
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim K As Integer, dim i as integer
     
    For K = 4 to 18
    i = i + 2
    Sheets("Récapitulatif").Range("B" & K) = Sheets(i).Range("E2").Value 'Nom du client'
    Sheets("Récapitulatif").Range("C" & K) = Sheets(i).Range("B2").Value 'N° de dossier''
     
    next k

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Ou 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
    Sub Recap()
    Dim Ws As Worksheet
    Dim k As Byte
     
    Application.ScreenUpdating = False
    With Sheets("Récapitulatif")
        k = 4
        For Each Ws In ThisWorkbook.Worksheets
            If InStr(Ws.Name, "(FS)") > 0 Then
                .Range("B" & k).Value = Ws.Range("E2").Value   'Nom du client'
                .Range("C" & k) = Ws.Range("B2").Value         'N° de dossier''
                k = k + 1
            End If
        Next Ws
    End With
    End Sub

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

Discussions similaires

  1. faire une boucle sous vba avec condition
    Par ons1402 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/03/2012, 17h16
  2. [AC-2003] creer une requête en VBA avec des variables
    Par qung88 dans le forum VBA Access
    Réponses: 14
    Dernier message: 23/02/2011, 15h19
  3. Liste déroulante avec 2 colonnes dont une cachée
    Par Sekigawa dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 31/03/2009, 11h28
  4. Tri avancé avec 2 critères dont une date
    Par cynoq dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/11/2007, 15h42
  5. [code VBA]passage de variable pour une requête paramétrée
    Par christrabin dans le forum VBA Access
    Réponses: 3
    Dernier message: 13/04/2007, 14h30

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