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

  • Initiateur de la discussion Initiateur de la discussion Kyirra
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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....
 
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
 
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 !
 
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
🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
722
Retour