Fonction "range" [Résolu]

Roussetj 52 Messages postés jeudi 26 juin 2008Date d'inscription 2 octobre 2008 Dernière intervention - 2 sept. 2008 à 10:34 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention
- 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,
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 2 sept. 2008 à 11:38
3
Merci
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

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de jrivet
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 2 sept. 2008 à 10:42
0
Merci
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
Commenter la réponse de jrivet
Roussetj 52 Messages postés jeudi 26 juin 2008Date d'inscription 2 octobre 2008 Dernière intervention - 2 sept. 2008 à 10:50
0
Merci
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??
Commenter la réponse de Roussetj
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 2 sept. 2008 à 10:59
0
Merci
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
Commenter la réponse de jrivet
Roussetj 52 Messages postés jeudi 26 juin 2008Date d'inscription 2 octobre 2008 Dernière intervention - 2 sept. 2008 à 11:23
0
Merci
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.
Commenter la réponse de Roussetj
Roussetj 52 Messages postés jeudi 26 juin 2008Date d'inscription 2 octobre 2008 Dernière intervention - 2 sept. 2008 à 12:45
0
Merci
oui merci ça marche, je n'avais pas pensé à mettre activesheet de vant toutes les cellules...

merci beaucoup.
Commenter la réponse de Roussetj
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 2 sept. 2008 à 21:50
0
Merci
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
Commenter la réponse de bigfish_le vrai
DamienGB 30 Messages postés mercredi 23 mai 2012Date d'inscription 13 août 2012 Dernière intervention - 29 mai 2012 à 08:55
0
Merci
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
Commenter la réponse de DamienGB
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 29 mai 2012 à 10:28
0
Merci
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
Commenter la réponse de ucfoutu
DamienGB 30 Messages postés mercredi 23 mai 2012Date d'inscription 13 août 2012 Dernière intervention - 29 mai 2012 à 10:52
0
Merci
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
Commenter la réponse de DamienGB
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 29 mai 2012 à 11:39
0
Merci
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
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.