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
    Membre à l'essai
    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
    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 expérimenté
    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
    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 chevronné
    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
    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

  4. #4
    Membre expérimenté
    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
    Par défaut
    Pourquoi as-tu mis un for each o et non un for each cell?

  5. #5
    Membre chevronné
    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
    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

  6. #6
    Membre à l'essai
    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
    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 expérimenté
    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
    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
    Membre à l'essai
    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
    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 chevronné
    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
    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

  10. #10
    Membre à l'essai
    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
    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
    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
    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

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