Fonction "range"

Résolu
Roussetj Messages postés 52 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 2 octobre 2008 - 2 sept. 2008 à 10:34
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 29 mai 2012 à 11:39
bonjour,

dans mon code, jé déduis la valeur d'une variable Ligne et la valeur d'une variable Colonne.
ces 2 valeurs sont des entiers.

je veux ensuite copier la zone correspondant à ces valeurs.
concrétement, si Ligne =7 et Colonne =9

je veux copier la zone "I7:I1000"  (1000 est fixe ds mon code)

Comme je n'ai que des entiers, je voulais savoir s'il existe un moyen de "concaténeré la fonction :
ActiveSheet.Range("I7:I1000").Copy

merci,

11 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
2 sept. 2008 à 11:38
Salut,
Essaie peut etre

ActiveSheet.Range(ActiveSheet.Cells(Ligne, Colonne), ActiveSheet.Cells(1000, Colonne)).Copy
   'OU Alors
   WorkSheets("NomFeuille").Range(WorkSheets("NomFeuille").Cells(Ligne, Colonne), WorkSheets("NomFeuille").Cells(1000, Colonne)).Copy, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i€n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
2 sept. 2008 à 10:42
Salut,

NOTE: Range n'est pas une FOnction mais un Objet

Essaies
Dim Ligne As Long
   Ligne = 7
   ActiveSheet.Range("I" & CStr(Ligne) & ":I1000").Copy, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i€n
Pensez: Réponse acceptée
0
Roussetj Messages postés 52 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 2 octobre 2008
2 sept. 2008 à 10:50
d'accord objet, je note.

oui ça marchepour la ligne, mais comment faire pour la colonne??

pcq la lettre "I" vient de ma variable Colonne qui est ici égale à 9.

comment insérer cette sorte de traduction dans l'objet range??
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
2 sept. 2008 à 10:59
Salut,
Dans ce cas Utilise Cells En plus

Dim Ligne As Long
Dim Colonne As Byte
   
   Ligne = 7
   Colonne = 9
   Range(Cells(Ligne, Colonne), Cells(1000, Colonne)).Select, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i€n
Pensez: Réponse acceptée
0

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

Posez votre question
Roussetj Messages postés 52 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 2 octobre 2008
2 sept. 2008 à 11:23
oui merci ça marche presque, mais j'ai encore un petit problème.

la zone que je veux copier ne se situe sur la page initiale.

et lorsque je mets cette ligne:

ActiveSheet.Range(Cells(Ligne, Colonne), Cells(1000, Colonne)).Copy

il y a un message d'erreur: "erreur 1004"
                                       "application-defined or object-defined error"

alors que sans "activesheet" VBA ne met pas de message d'erreur, mais je ne selectionne pas la zone de la bonne feuille.
0
Roussetj Messages postés 52 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 2 octobre 2008
2 sept. 2008 à 12:45
oui merci ça marche, je n'avais pas pensé à mettre activesheet de vant toutes les cellules...

merci beaucoup.
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
2 sept. 2008 à 21:50
Salut,

d'ou l'avantage avec excel d'utiliser le with pour simplifier l'ecriture du code :

With ActiveSheet
    .Range(.Cells(Ligne, Colonne), .Cells(1000, Colonne)).Copy
End With

   'OU Alors

With WorkSheets("NomFeuille")
    .Range(.Cells(Ligne, Colonne), .Cells(1000, Colonne)).Copy
End With
0
DamienGB Messages postés 30 Date d'inscription mercredi 23 mai 2012 Statut Membre Dernière intervention 13 août 2012
29 mai 2012 à 08:55
Je déterre le sujet car je traine un problème récurrent sur les méthode Range

En effet j'importe des résultats dans Excel mais je ne sais pas la taille de ces résultats

Quand de temps en temps leur taille est d'une seule ligne (ou colonne mais ce n'est pas mon cas)

La méthode classique

Range("B2").End(xlDown).Address  (ou Rows)

me renvoit donc une ligne infinie si je n'ai rien en B3

Est il possible d'avoir une option pour que ça renvoi B2,actuellement je passe par des conditions if mais ça alourdi le codage
1)condition si rien en B2
2)condition si quelque chose en B2 et rien en B3
3)condition si quelque chose en B2 et quelquechose B3
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 mai 2012 à 10:28
Bonjour,
Quelles sont les situations possibles exactes ?
Tu démarres de B2, OK
Mais que cherches-tu ensuite ?
- la dernière cellule remplie de la totalité de la colonne B à partir de B2 ?
ou
- la dernière cellule remplie (à partir de B2) avant une cellule blanche dans la colonne B, y compris si d'autres cellules sont remplies plus bas ?
Cela ne se détermine pas de la même manière. Il te faut donc être très précis sur ce que tu cherches à faire.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
DamienGB Messages postés 30 Date d'inscription mercredi 23 mai 2012 Statut Membre Dernière intervention 13 août 2012
29 mai 2012 à 10:52
Non je n'ai pas de cellule vide dans ma colonne

Ce qui me pose pose problème c'est la recherche de dernière ligne quand il y en a qu'une seule.

http://www.hostingpics.net/viewer.php?id=9675551024.png
Là tout marche bien mon
Range("B2").End(xlDown).Address
me renvoi bien

http://www.hostingpics.net/viewer.php?id=5572751025.png
Range("B2").End(xlDown).Address
me renvoi B100...
et je voudrait simplement B2
(j'arrive à le faire en utilisant des conditions)
If Range("B2").Value = "" Then

ne rien faire
...
If Range("B2").Value <> "" And Range("B3").Value = "" Then

le faire que pour la case B2
...
If Range("B2").Value <> "" And Range("B3").Value <> "" Then

le faire jusqu'à la case issue du Range("B2").End(xldown).Address
...

Mais il existe peut etre une option de Range pour le faire??

En fait j'importe des résultat sous Excel dont je ne connais pas la taille
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 mai 2012 à 11:39
Si tu n'as pas de cellules vides dans la colonne B
que te donnerait :
MsgBox Range("B2:B" & Rows.Count).SpecialCells(xlCellTypeBlanks).Row

Le rang de la première cellule vide de la colonne B à partir du rang 2. Non ?

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Rejoignez-nous