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 :

Déterminer une plage de sélection par boucle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2017
    Messages : 13
    Par défaut Déterminer une plage de sélection par boucle
    Bonjour,

    Je vous sollicite pour simplifier un bout de procédure.

    DAns l'exemple ci dessous, je détermine les zones de ma procédure.
    Etant donné que ces zones sont reviennent toute les 3 colonnes, existe t'il un moyen d'incorporer une variable qui simplifierait la saisie sous forme de boucle ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Intersect(Target, Me.Range("E4:E" & ln)) Is Nothing Or Not Intersect(Target, Me.Range("H4:H" & ln)) Is Nothing Or Not Intersect(Target, Me.Range("K4:K" & ln)) Is Nothing Or Not Intersect(Target, Me.Range("N4:N" & ln)) Is Nothing Or Not Intersect(Target, Me.Range("Q4:Q" & ln)) Is Nothing Or Not Intersect(Target, Me.Range("T4:T" & ln)) Is Nothing Or Not Intersect(Target, Me.Range("W4:W" & ln)) Is Nothing Or Not Intersect(Target, Me.Range("Z4:Z" & ln)) Is Nothing Or Not Intersect(Target, Me.Range("AC4:AC" & ln)) Is Nothing Or Not Intersect(Target, Me.Range("AF4:AF" & ln)) Is Nothing Or Not Intersect(Target, Me.Range("AI4:AI" & ln)) Is Nothing Or Not Intersect(Target, Me.Range("AL4:AL" & ln)) Is Nothing Or Not Intersect(Target, Me.Range("AO4:AO" & ln)) Is Nothing Or Not Intersect(Target, Me.Range("AR4:AR" & ln)) Is Nothing Or Not Intersect(Target, Me.Range("AU4:AU" & ln)) Is Nothing Or Not Intersect(Target, Me.Range("AX4:AX" & ln)) Is Nothing Then ]
    Merci de votre aide
    Sophie

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Bonjour,
    Essaye ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim test as boolean, col as long
    test = false
    for col = 5 to 50 step 3
    test = test or Not Intersect(Target, Me.Range(cells(4,col),cells(ln,col))) Is Nothing 
    next col
    if test then

  3. #3
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Oui c'est possible !
    Plutôt que d'utiliser la syntaxe Range, tu peux utiliser la syntaxe Cells(no_ligne, no_colonne). Les lignes sont équivalentes 2 par 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    '1.
    Range("A2").Value = "toto"
    Cells(2, 1).Value = "toto"
    '2.
    Range("A1:A10").Select
    Range(Cells(1, 1), Cells(10, 1)).Select
    Ensuite, pour faire une boucle d'un pas de 3, on utilise le mot clef Step :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim somme As Integer
    For i = 0 To 9 Step 3
        somme = somme + 1
    Next i
    'somme = somme des nombres entre 0 et 9 inclus divisibles par 3

  4. #4
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2017
    Messages : 13
    Par défaut
    Je viens de tester la solution de halaster08, et c'est exactement ce que je cherchais.
    Merci bcp pour ton aide.

    Sophie

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

Discussions similaires

  1. Sélection d'une plage de dates par macro très lente
    Par yvesduc dans le forum QlikView
    Réponses: 1
    Dernier message: 11/03/2010, 15h48
  2. Réponses: 2
    Dernier message: 16/03/2009, 15h06
  3. Réponses: 4
    Dernier message: 11/08/2008, 15h29
  4. Réponses: 25
    Dernier message: 30/05/2007, 13h03
  5. [VBA-E] tester la valeur d'une plage de données sans boucle
    Par bibi5883 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/04/2007, 08h36

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