Selection d'une cellule d'autre sheet excel

Fermé
joey12 - 26 sept. 2007 à 21:00
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 27 sept. 2007 à 09:11
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
A voir également:

6 réponses

eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 257
26 sept. 2007 à 21:51
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
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
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 257
27 sept. 2007 à 00:09
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
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 257
27 sept. 2007 à 00:12
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 257
27 sept. 2007 à 09:11
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