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 For Each Next


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Gestionnaire de paies
    Inscrit en
    Octobre 2016
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Gestionnaire de paies
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2016
    Messages : 77
    Par défaut Boucle For Each Next
    Bonjour,

    Je souhaiterais faire une boucle avec for each ... next mais je n'arrive pas à poser mon code

    Voici ce que je souhaite faire :

    Sur la feuille active,
    si C12 est différent de ""
    si A1 = "SEM A"
    alors je copie les cellules B8 -> H14 (soit range("B8").resize(6,6)) de la feuille "SEM A" en E12 -> K18 de la feuille active
    Voici un debut de code...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set Cell = c12
    Dim Cell As String
    For Each Cell In ActiveSheet
    If Cell = "" Then
    If ("A1") = "SEM A" Then
    Sheets("SEM A").Range("B8").Resize(6, 6).Copy
    Cell.Offset(0, 2).Paste
    En suite je souhaite boucler toutes les 11 cellules vers le bas, soit offset (11,0) soit :
    si C23 est différent de ""
    si A1 = "SEM A"
    alors je copie les cellules B19 -> H25 (soit range("B19").resize(6,6)) de la feuille "SEM A" en E23 -> K29 de la feuille active

    Et je boucle jusqu’à ce que une cellule est soit vide.

    Merci à tous ceux qui pourront m'aider...

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 182
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comme tu as certainement dû le constater, cette procédure renvoie une erreur dès la deuxième ligne si tu n'as pas mis l'instruction Option Expilcit en tête de module et dès la première ligne si tu as placé cette instruction
    Règle n°1 : On déclare une variable avant de lui passer une valeur.

    Autre erreur une boucle For Each Object In Collection.... Next parcoure une collection ou une plage de cellule.
    Il faudra donc déclarer la variable Cell comme un objet Range et non pas comme un String

    Je me suis arrêté là dans la lecture
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Femme Profil pro
    Gestionnaire de paies
    Inscrit en
    Octobre 2016
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Gestionnaire de paies
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2016
    Messages : 77
    Par défaut
    Effectivement... Merci Philippe
    J'ai donc modifié et mis :

    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
     
     
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     
     
    Dim Cell As Range
    Set Cell = Range("c12")
     
    If [B1] = "DUP" Then
     
    For Each Cell In ActiveSheet
    If Cell = "" Then
    If ("A1") = "SEM A" Then
    Sheets("SEM A").Range("B8").Resize(6, 6).Copy
    Cell.Offset(0, 2).Paste
     
     
    Next
     
     
    End If
     
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Avant d'aller plus loin :
    As-tu une idée de ce que va parcourir ta boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Cell In ActiveSheet
    ?
    On n'écrit jamais sans savoir avec précision de ce cela signifie exactement

  5. #5
    Membre confirmé
    Femme Profil pro
    Gestionnaire de paies
    Inscrit en
    Octobre 2016
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Gestionnaire de paies
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2016
    Messages : 77
    Par défaut
    Oui je souhaite parcourir la feuille active toutes les 11 lignes à compter du la cellule C12.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Oui je souhaite parcourir la feuille active
    1) est un non-sens. On ne parcourt pas une feuille, mais ses cellules. ActiveSheet est une feuille, ses cellules sont activesheet.Cells
    2) parcourir la totalité des cellules d'une feuille ? Sous office 2007 ou ultérieur, tu aurais le temps d'aller prendre un café, voire un repas complet, même en ne faisant que parcourir, sans rien faire d'autre !

Discussions similaires

  1. [XL-2007] Boucles For Each Next: problème de défilement des feuilles avec lenteur d'exécution
    Par camelia.w dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/12/2011, 20h08
  2. [XL-2003] boucle For each Next
    Par facteur dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/11/2009, 16h41
  3. boucle for each next : sauter une valeur
    Par scavenger dans le forum VBScript
    Réponses: 1
    Dernier message: 18/02/2009, 10h15
  4. Boucle For Each Next non entrée
    Par Kareg dans le forum VBA Access
    Réponses: 9
    Dernier message: 21/05/2008, 14h35
  5. [VBA-E]PB sur une boucle for each next
    Par rond24 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/07/2006, 15h47

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