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 :

syntaxe boucle "for each"


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 2
    Points
    2
    Par défaut syntaxe boucle "for each"
    Bonjour,
    malgrès plusieurs tentatives, je n'arrive pas à coder une boucle de type "for each". Cette boucle est censée tester une série de cellule (BA30:CN30). A chaque foie que l'une de ces cellules est égale à 1, je souhaite forcer à "1" la cellule ce trouvant juste dessous ex: (BA31=1 si BA30=1; BB31=1 si BA30=1;etc;etc).
    Merci par avance aux personnes qui souhaite m'aider sur ce sujet.

    cordialement

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Points : 335
    Points
    335
    Par défaut
    Bonjour,

    Un simple IF te suffis.

    Tu dis si la valeur de la cellule i=1 alors la cellule i+1=1 next i+1 pour passer à la cellule suivante

  3. #3
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut
    bonjour,

    Voici un exemple de boucle for each. Il suffit après d'adapter à votre besoin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub hide()
    Application.ScreenUpdating = False
    For Each o In Range("BA30:CN30")
    If o.Value = "1" Then
    'le code ...
    End If
    Next
    End Sub
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Points : 335
    Points
    335
    Par défaut
    Pourquoi as-tu mis un for each o et non un for each cell?

  5. #5
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut
    Car j'ai fait un copier coller d'un code que j'ai dans un classeur (j'avais la fleme de le retaper je l'avoue ^^ mdrr) et j'avais utilisé la variable cell pour un autre truc enfait. Mais oui for each cell marche très bien
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

  6. #6
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    bonjour messieurs et merci de votre aide,
    en fait, ce que je n'arrive pas à faire, ç'est comment déclarer les cellules qui doivent être forcées à "1" (BA31:CN31) toujours en fonction de celle qui ce trouve juste au dessus(BA30:BA30).
    j'espère être clair dans mes explications
    désolé pour mon ignorance
    cordialement

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Points : 335
    Points
    335
    Par défaut
    Bonjour,

    Pour cela tu fais ce que je t'ai dis dans mon premier message.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If cell.value = 1 Then cell.offset(1,1).Value = 1
     
    Enf If 
     
    Next cell +1 'sinon toute tes cellule vont valoir 1

  8. #8
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    merci beaucoup pour votre aide (meme si je n'ai pas réussi à l'appliquer), un truc m'échappe mais je sais pas quoi...tans pis.

    je ne vais pas vous déranger plus longtemp...

    bonne journée

  9. #9
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut
    Normalement ca doit fonctionner Had4789 t'a tout donner en main!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
    Application.ScreenUpdating = False
    For Each Cell In Range("BA30:CN30")
    If Cell.Value = "1" Then
    Cell.Offset(1,1).Value = 1 ' pour info Offset(n,x) décale de n ligne a coté de la cellule cible et décale de x colonne a coté de la cellule cible. Pour être plus clair en gros dans le code si la valeur de la cellule cible est 1 alors la valeur de la cellule située une ligne en dessous et une colonne à coté = 1
    End If
    Next Cell +1
    End Sub
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

  10. #10
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    désolé bboy-eazy votre code renvoie un défaut sur l'avant dernière ligne...merci de votre percévérence. suite au détail expliqué dans votre dernier post, je commence à comprendre un peu mieux la logique de la démarche. Pourquoi excel ne veux du "Next Cell +1" ?

    merci beaucoup

  11. #11
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour, bonjour !

    Citation Envoyé par sterf Voir le message
    Pourquoi excel ne veux du "Next Cell +1" ?
    VBA, et non Excel, est un langage !

    Il suffit donc de juste lire et appliquer l'aide VBA intégrée concernant l'instruction For Each
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

Discussions similaires

  1. Boucle xsl:for-each provoque une erreur
    Par Max1000p dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 05/06/2012, 17h41
  2. Boucle dite "for each"
    Par sebcbien11290 dans le forum Langage
    Réponses: 5
    Dernier message: 19/07/2011, 17h16
  3. [XSLT] Problème de boucle avec for-each
    Par knack8 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 29/04/2009, 01h42
  4. boucle <xsl:for-each>
    Par Mike35 dans le forum XSL/XSLT/XPATH
    Réponses: 17
    Dernier message: 13/02/2006, 11h58

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