Macro excel :selection d'une plage de cellule

Von lebaron Messages postés 7 Statut Membre -  
 Eruel -
Bonjour,
je suis débutant en macro excel.
je souhaiterais effectuer une selection variable d'une plage de cellules en fonction de certaines conditions.
je m'explique :
dans la première colonne de mon tableau, j'ai une plage de 10 cellules. dans chaque cellule se trouve une checkbox.
pour chaque cellule, si la checkbox est cochée, la cellule doit etre selectionnée.
A la fin je souhaite recuperer la plage de cellule correspondant au checkbox coché.
j'espere que je suis pas trop confus!!!
voili voilou

merci d'avance

Von lebaron
Configuration: Windows XP
Internet Explorer 6.0

8 réponses

  1. Papou93 Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   59
     
    Bonsoir Von lebaron, gbinforme,

    Cette macro atteint le but recherché :

    Public Plage As String
    
    Public Sub SelPlage()
    Plage = ""
    For n = 1 To 4
      If Cells(n, 3) Then Plage = Plage & "B" & n & ","
    Next
    If Right(Plage, 1) = "," Then Plage = Left(Plage, Len(Plage) - 1)
    Range(Plage).Select
    End Sub

    PS : il faut définir la propriété LinkedCell de chaque CheckBox à la cellule correspondante en colonne 3 (dans mon exemple, mais on peut définir n'importe quelle autre colonne et la masquer) : on obtient ainsi VRAI si la CheckBox est cochée ou FAUX dans l'autre cas. Il est facile ensuite de récupérer cette valeur dans la boucle.
    Petite précision : en code VBA, la séparation des cellules non contugües se définit avec "," au lieu de ";" dans les feuilles Excel.

    Espérant avoir apporté un grain de sel utile.

    Cordialement.
    4
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonsoir,

    Pour présenter d'autres fonctions dans la boucle tu peux aussi utiliser ...then plage = Union(plage, cell(n, 3).Offset(0, -2)) en ayant défini plage as range (et supprimer les 2 dernières lignes)
    eric
    2
  3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    A la fin je souhaite recuperer la plage de cellule correspondant au checkbox coché.

    Tu dis toi même qu'il y a une checkbox dans chaque cellule et donc ce n'est pas une plage.

    Tu souhaites récupérer où ?

    C'est un peu confus effectivement tout cela, tu devrais reformuler tout à fait différemment ta question et en voyant les deux versions on arriverai plus facilement à comprendre.
    @+
    1
  4. Von lebaron Messages postés 7 Statut Membre 1
     
    Bonjour Papou93, eriiic, gbinforme
    tout d'abord je vous remercie pour votre aide.
    ca marche parfaitement désormais, la selection de plages non contigues se réalise.
    j'ai un dernier petit souci, la plage de cellules selectionnée doit permettre de renseigner une plage de critère du solveur excel.
    Mais le solveur ne reconnait pas "," il reconnait juste ":".
    Je n'arrive donc pas à faire une selection de plages non contigues.

    merci d'avance

    Von lebaron
    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Von lebaron Messages postés 7 Statut Membre 1
     
    bonjour gbinforme,
    tout d'abord merci de m'avoir répondu aussi rapidement.
    je vais essayer d'etre moins confus.
    voici mon tableau :

    A B
    1 chckbox1=true 10
    2 chckbox2 12
    3 chckbox3=true 13
    4 chckbox3 17

    dim i 'variable

    Pour i = 1 à 4
    si A(i)=true alors
    selection de la cellule B(i)
    fin
    ensuite selection de la plage de cellule correspondant à une valeur de checkbox =true.

    dans mon exemple, je souhaite recuperer la plage (B1;B3).
    cette plage sera ensuite transféré au solveur excel comme plage de critère.

    j'espere que c plus clair!
    merci d'avance

    Von lebaron
    0
  7. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Je ne me sert pas du solveur mais est-ce qu'il ne voudrait pas du ; à la place de la , comme séparateur ?
    0
  8. Eruel
     
    Je me permets de déterrer le sujet car je suis dans une situation similaire j'utilise le solveur pour resoudre des equations. Mes cellules variables ont un fond rouge et selon mon probleme ce ne sont pas les memes cellules qui doivent être résolues. J'ai essayé avec "for et "if" mais je ca ne marche pas je ne vois pas comment ajouter ma plage de cellule dans le solveur.

    For Each Cell In Sheets("Feuil1").Range("B2:D16")
    If Cell.Interior.Color = 255 Then
    SolverOK SetCell:=Range("J2"), MaxMinVal:=3, ValueOf:=0,
    ByChange:=Cell.Value
    End If
    Next
    0
  9. Eruel
     
    Personne pour donner un coup de pouce ?
    -1