Selection d'une cellule d'autre sheet excel

joey12 -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
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. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  2. joey12
     
    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
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. joey12
     
    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
  7. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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