Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 [VBA][Résolu] Création d'une plage de donnée RANGE variable

Kyirra

XLDnaute Nouveau
Bonjour amis amateurs d'excel et de VBA,

Je voulais vous demander une information quant à une restriction / erreur? d'excel que je ne comprend pas :

Quand je viens sélectionner une plage comme ceci :

i = 0
itemTotal = 10

Do while i<itemTotal

ActiveSheet.Range("A6:C"&i)

i=i+1

Loop

La plage fonctionne, par contre si je veux que ce soit mon A qui itère comme ceci :

i=0
itemTotal = 10

Do While i<itemTotal

ActiveSheet.Range("A"&i&":C20")

i=i+1
Loop

excel me met en surbrillance : ":C20" et me dit : Erreur de compilation : Attendu séparateur de liste ou )

Je ne comprend pas car dans les deux cas il s'agit bien de plage, juste le ":" de la plage est dans la deuxième partie et sa plante.. et donc le problème me bloque dans la création de mon programme car je doit sélectionner des valeur à l'aide d'un Vlookup, mais en restreignant petit à petit les ligne pour par qu'il me retourne la même valeur... J'ai donc vraiment besoin de cette plage variable.
Savez vous d'où viens l'origine de cette erreur et s'il est possible de la solver. sur internet j'ai bien vu quelqu'un qui faisait Range("A" & i & ":L" & i) en disant que ca fonctionnait pour lui, mais moi dans ce cas excel me retourne encore l'erreur de compilation....
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Kyirra,
Utilisez les balises </> ( icone à droite de l'icone GIF ) pour le code c'est bien plus lisible.
Cela m'étonne que votre premier code marche, car pour i=0 vous avez :
ActiveSheet.Range("A6:C0"), ce qui génère une erreur.
Dans votre second code, idem. En plus que faites vous du range ? Non renseigné, il génère une erreur.
Ce code ci dessous fonctionne :
VB:
Sub Essai()
    i = 1           ' On commence à 1, non à 0
    itemTotal = 10
    Do While i < itemTotal
        ActiveSheet.Range("A" & i & ":C20").Select
        i = i + 1
    Loop
End Sub
 

Kyirra

XLDnaute Nouveau
Merci pour ta réponse, je ne connaissais pas cette balise et je me demandais comment les autre personnes du site réussissaient a faire apparaitre ce menu.

Pour les nombres des cellules j'avoue les avoir mis au pif pour expliquer mon problème réellement dans mon programme, mon iteration commence a deux et la deuxième valeur de la range est toujours plus élevé que la première (étant un principe de base d'excel j'ai simplement voulu aller plus vite en mettant des valeurs au pif)

Je vais tenter votre code et voir si cela fonctionne.

PS Après test, excel ne me retourne pas d'erreur je vais voir si cela peux coller à mon programme.

Merci de l'aide !
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Si les indices sont bons, alors l'erreur venait de :
VB:
ActiveSheet.Range("A" & i & ":C20")
Vous dites Plage de A2 à C20.
Et le VBA vous répond :
T'es gentil mon garçon, mais qu'est ce que j'en fait de ta plage ?
Derrière il doit y avoir une action , comme :
Code:
ActiveSheet.Range("A" & i & ":C20").Selevt
ou
ActiveSheet.Range("A" & i & ":C20").ClearContents
 

Kyirra

XLDnaute Nouveau
Ah d'accord ! je comprends beaucoup mieux ! Je pensais que de base Range si on ne donnait pas de valeur il considérait que c'était une sélection, comme il le fait si on écrit simplement :
VB:
ActiveSheet.Range("A2:C20")
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…