Selection d'une cellule d'autre sheet excel

Salut,
je voudrais selection une plage de cellule dans un macro vba...
mais ces cellules se trouvent ds un autre sheet... comment faire?

je pensais que cela marcherais...

Sheets("SQL").Range("B4", Range("B6000").End(xlDown)).Select

donc les colonnes sont ds le sheet SQL et moi je suis dans le sheet RIC ...

meric pour votre aide
Configuration: Windows XP
Internet Explorer 6.0

6 réponses

  1. Contributeur
    Bonsoir,

    Selectionne ou active ta feuille avant et ça marche (enfin si c'est dans un module)
    Sheets("SQL").Select
    Par contre je ne comprend pas le ", Range("B6000").End(xlDown))".
    A moins que tu n'aies une cellule vide au dessus de B6000 et que tu désires selectionner au moins jusque là remarque...

    eric
    0
    1. merci eric...
      en fait la je me suis dit que je ferais la macro dans le shete SQL et ke le bouton je le mettrais sur l'autre sheet...
      ce pendant... peut etre peut tu m'aider pour cet autre pb que je rencontre...

      je voudrais selectionner une colonne qui contien des requetes SQL...
      dans chacune des cellule il y a un IF....., ..., "")
      donc en gros... dans la colonne j'ai... des requetes SQL et des cellules ""vides"
      je voudrais selectionner uniquement les cellules contenant les requetes!!! impossible!!!
      avec ca:
      Range("K19", Range("K100").End(xlDown)).Select par ex, je selectionne toutes les cellules pleine a partir de K19..

      mon pb est que cette ligne selection TOUT... meme les cellules contenant ""!!!

      merci de ton eventuelle aide
      0
      1. Contributeur
        oui j'ai une idée, c'est de faire une intersection de zones, à toi de tester

        Dim zone1 As Range
        Dim zone2 As Range

        ' si tes chaines démarrent bien par IF elles seront considérées comme des constantes donc :
        Set zone1 = Selection.SpecialCells(xlCellTypeConstants, 23) 'selection de toutes les constantes de ta feuille
        Intersect(zone1, Range("B:B")).Select ' et selection de l'intersection avec la colonne B

        ' si tes chaines démarrent par = elles seront considérées comme des formules donc :
        Set zone2 = Selection.SpecialCells(xlCellTypeFormulas, 23) ' idem pour les formules
        Intersect(zone2, Range("B:B")).Select

        'et si il te faut les 2:
        Intersect(Union(zone1,zone2), Range("B:B")).Select ' bon là j'suis moins sûr...

        Là j'ai fait avec toute la colonne B, tu mets la zone que tu veux y compris une autre union de zone si besoin

        Dis moi si ça a marché... ;-)

        eric
        0
        1. Contributeur
          Par curiosité pourquoi te faut-il absolument les selectionner comme ça ?
          Tu ne vas pas faire un traitement cellule par cellule ? Auquel cas un simple test à chaque fois etait suffisant
          0
          1. salut,
            j'ai utiliser ta 2eme idee, et ca me donne encore le meme resultat que j'avais...
            en gros, dans certaines ligne j'ai la requete queje veux et dans d'autres j'ai vide ("") et ceci donc du au =IF etc etc...

            en utilisant ton code, la selection meme les cellules ''vides'' sont selectionnees... et c absoument pas ce que je veux...
            le truc c ke c un excel dynamique... donc les requetes peuvent en gros etre sur 10 lignes comme sur 500 lignes de la meme colonne... et pour les executer il faut que je les selectionnent tu vois?

            la solution ke je me suis donne c de mettre ds le IF (...,...,"null")
            et de faire un test genre:

            For Each Cel In Selection
            If Cel.Value <> "NULL" Then
            psSQL = Cel
            Set prs = pcn.Execute(psSQL)
            End If
            Next

            merci!!
            0
            1. Contributeur
              Bonjour,

              Si si ça marche, mais il fallait choisir un .select ou l'autre, les mettre en commentaire sauf celui qui tu testais. L'un à suite de l'autre l'intersection est vide et genere le message.

              J'ai reécrit diggeremment qu'il n'y ait qu'un seul .select à la fois

              Sub test()
              Dim zone1 As Range
              Dim zone2 As Range

              ' constantes
              Set zone1 = Selection.SpecialCells(xlCellTypeConstants, 23) 'selection de toutes les constantes de ta feuille
              Set zone1 = Intersect(zone1, Range("B:B")) ' et selection de l'intersection avec la colonne B
              ' formules
              Set zone2 = Selection.SpecialCells(xlCellTypeFormulas, 23) ' idem pour les formules
              Set zone2 = Intersect(zone2, Range("B:B"))

              zone1.Select
              MsgBox ("selection contantes")
              zone2.Select
              MsgBox ("selection formules")
              Intersect(Union(zone1, zone2), Range("B:B")).Select
              MsgBox ("selection contantes et formules")

              End Sub

              eric
              0