Explication ligne de code

Bonjour,

Je suis complètement néophyte avec le langage VBA. J'ai regardé différents tuto sur youtube et lu (succinctement) des livres sur le code VBA mais je suis loin d’en avoir tiré toutes les bonnes conclusions ^^

Je vous explique, je suis tombé récemment sur cette ligne de code qui me permet d'éliminer une colonne sur deux dans excel:

Sub test()

For i = Range("A1").End(xlToRight).Column To 4 Step -2

Columns(i).EntireColumn.Delete

Next

End Sub

J'aimerais comprendre cette ligne pour pouvoir par analogie faire d'autres opérations type couper ce qu'il y a dans la case A1 (par exemple) et le coller deux colonnes plus loin.

J'ai essayé de tirer mes propres conclusions en regardant le code après avoir enregistré une macro mais je tombre sur quelque chose qu'il faut écrire autant de fois qu'il y a de colonnes... donc pas utile du tout.

J'en viens donc à votre gentillesse pour prendre un peu de votre temps et m'expliquer ce que signifie ce qui est écrit dans le code ci-dessus.

Merci d'avance

Ryan

Bonjour Ryansberg, le forum,

Sauf erreur de ma part:

Range("A1").End(xlToRight).Column

Dernière colonne à droite en fonction de A1

For i = Range("A1").End(xlToRight).Column To 4 Step -2

Boucle de la dernière colonne à droite vers la quatrième avec un pas de -2 (donc 1 colonne sur 2)

Comme il s'agit de suppression, on part de la fin vers le début.

Columns(i).EntireColumn.Delete

On supprime les colonnes

3classeur1.xlsm (17.05 Ko)

Cordialement,

Bonjour

alors décomposition

i = Range("A1").End(xlToRight).Column 

détermine la dernière colonne occupée sur la ligne 1 je vais prendre un exemple colonne 12 équivalent colonne L

To 4 

on va s’arrêter à la colonne 4 donc équivalent colonne D

Step -2

on décrémente de deux en deux ici cela sera les numéros de colonnes a supprimer

donc ceci

For i = Range("A1").End(xlToRight).Column To 4 Step -2

sur la première boucle

on va partir de la dernière colonne dans mon exemple L (12)

2e boucle 12- 2 = 10 colonne J

3e boucle 10-2= 8 colonne H

4e boucle 8-2 = 6 colonne F

5e boucle 6-2 = 4 colonne D

fini car on est arrivé à 4

et ceci

Columns(i).EntireColumn.Delete

permet de supprimer la colonne i (12,10,8,6,4)

Fred

Bonjour, salut xorsankukai !

Petite remarque : .EntireColumn est inutile, vu qu'on fait déjà référence à une colonne complète...

On peut donc utiliser directement :

Columns(i).Delete

Bonjour fred2406, Pedro22,

@fred2406: je vois que j'ai des progrets à faire en termes d'explication, , ton post est nettement plus explicite,

@Perdo22: merci pour ta remarque

Amitiés,

Un grand merci à vous!

Je m'y remets asap pour voir si j'ai bien tout compris.

Merci beaucoup beaucoup

Rechercher des sujets similaires à "explication ligne code"