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 :

Variation zone de sélection


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 66
    Par défaut Variation zone de sélection
    Bonjour tout le monde,

    J'ai un léger problème d'optimisation de procédure.

    Serait-il possible de sélectionner une zone de sélection en fonction de conditions afin de traiter la zone sélectionnée par la suite.

    La logique est la suivante :

    Si la combobox "Combobox1" a la valeur "Enterrés", je peux sélectionner que de la cellule k8 à k9 de la feuille3.

    Si la combobox "Combobox1" a la valeur "Non enterrés", j'ai 2 cas de figures possible :

    1 : Sélection de la cellule k1 à la cellule k5

    2 : Sélection de la cellule k1 à la cellule k4


    La procédure que j'ai essayé de faire est la suivante (précison : elle ne fonctionne pas):

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Private Sub Instal_Click()
        Dim Celld As Range
        Dim Tableaud()
        Dim TempTabd As Variant
        Dim id As Integer, jd As Integer
        Dim boolVerifd As Boolean
        Dim d As Range
     
        ReDim Tableaud(1 To 1)
        Tableaud(1) = Cells(1, 1)
     
        'Boucle sur les données dans la Feuil3
        If ComboBox1.Value = "Enterrés" Then
            d = Worksheets("Feuil3").Range("K8,K9")
        ElseIf ComboBox1.Value = "Non enterrés" Then
            If pose.Value = "Sous conduit, profilé ou goulotte, en apparent ou encastré  " Or "Sous vide de construction, faux plafond" Or "Sous caniveau, moulures, plinthes, chambranles" Then
     
                d = Worksheets("Feuil3").Range("K1,K5")
     
            ElseIf pose.Value = "En apparent contre mur ou plafond " Or "Sur chemin de câbles ou tablettes non perforées" Then
     
                d = Worksheets("Feuil3").Range("K1,K6")
     
            End If
        End If
     
        For Each Celld In d
     
            boolVerifd = False
     
            'Vérifie si le contenu de la cellule existe déjà dans le tableau
            For id = 1 To UBound(Tableaud)
                'Si la donnée existe déjà dans le tableau
                If Tableaud(id) = Celld Then
                    boolVerifd = True
                    Exit For
                End If
            Next
     
           'Si la donnée n'existe pas dans le tableau, on augmente la taille du tableau
            'et on ajoute la donnée.
            If boolVerifd = False Then
                ReDim Preserve Tableaud(1 To UBound(Tableaud) + 1)
                Tableaud(UBound(Tableaud)) = Celld
            End If
     
            'Tri le contenu du tableau par ordre croissant.
            For id = 1 To UBound(Tableaud)
                For jd = 1 To UBound(Tableaud)
                    If Tableaud(id) < Tableaud(jd) Then
                        TempTabd = Tableaud(id)
                        Tableaud(id) = Tableaud(jd)
                        Tableaud(jd) = TempTabd
                    End If
                Next jd
            Next id
        Next Celld
     
        'Alimente le ComboBox
        Instal.List = Tableaud
     
    End Sub
    Si quelqu'un peut m'aider, je suis preneur.

    PS : merci Skyroad pour la FAQ, elle m'a sauvé la mise

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonsoir,

    Essaye comme ceci :
    Au lieu de d = ... --> Set d = ...
    Le changer partout

    Si ça coince encore, précise au moins la ligne de ton code qui bug parce que sans indication précise, sans fichier, il faut essayer de deviner

    PS : ça concerne quel type de câble ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 66
    Par défaut
    J'ai remplacé d apr Set d, mais le programme affiche "Objet requis" au niveau de :


    For Each Celld In d

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Si tu as bien ajouté Set à toutes les lignes d = ..., si tu as bien une feuille qui se nomme "Feuil3", alors je ne vois pas pourquoi ça coince.
    Tu peux faire le petit test ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    Dim d As Range, Celd As Range
    Set d = Sheets(3).Range("A1:B10")
    For Each Celd In d
        Celd.Interior.ColorIndex = 6
    Next
    End Sub
    Tu pourras constater que là ça fonctionne mais par contre si on écrit d = Sheets(3).Range("A1:B10") ça bug

Discussions similaires

  1. Récupérer l'adresse d'une zone de sélection
    Par belfaigore dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/07/2020, 15h18
  2. Vérification selection zone liste sélection multiple
    Par Nana35 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 15/11/2008, 15h43
  3. TChart, Zone de sélection et masquage de série
    Par kurul1 dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/02/2008, 10h23
  4. Etendre une zone de sélection
    Par amestoche dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/05/2007, 16h02
  5. Création d'une zone de sélection à la souris
    Par bahiatoon dans le forum C++Builder
    Réponses: 16
    Dernier message: 09/12/2006, 15h03

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