• Initiateur de la discussion Initiateur de la discussion Remi
  • 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 !

R

Remi

Guest
Bonjour forum,

Je suis à faire une macro pour me faciliter la vie dans un fichier. Je ne sais juste pas comment faire un loop pour que la macro se répète. Voici la macro:

Sub Supprime()
Dim c As Integer
Dim i As Integer
Dim v As Variant

i = Range("C1")
c = Range("C2")

For i = 1 To 10000
v = Cells(c, i)
If v = "" Then
Columns(i).Select
Selection.delete Shift:=xlToLeft
Exit For
End If
Next i


End Sub


En bref, je détermine la cellule de départ et je veux que lorsque la macro rencontre une cellule vide, elle supprime la colonne. Cette macro marche mais seulement pour une colonne. J'aimerais qu'elle puisse supprimer un nombre de ligne données (disons qu'on pourrait ajouter j = Range("C3") où je pourrais déterminer mon nombre de lignes et j'aimerais que la macro fasse un loop et fasse le programme jusqu'au bout du fichier.

Merci pour votre aide,

Rémi
 
Bonsoir Remi, bonsoir le forum,

Plusieurs anomalies dans ta macro. la variable i est définie deux fois. Une première fois où elle prend la valeur de la cellule C1 puis une seconde fois dans la boucle où elle redémarre à 1 (for i=1 to 10000).
La seconde est le [x]Exit For
qui annule toute la boucle et oblige la macro à s'arrêter dès la première colonne effacée.

Je te propose cela à la place : Définit en C1 la ligne de travail puis lance la macro. Cette dernière va vérifier toutes les cellules de la ligne définie et va effacer la colonne entière chaque fois qu'une cellule vide sera rencontrée.

Sub Supprime()
Dim c As Long 'déclare la variable c
Dim i As Integer 'déclare la variable i
Dim v As Variant 'déclare la variable v
Dim x As Integer 'déclare la variable x
Dim z As Integer 'déclare la variable z
c = Range("C1") 'définit la variable c (ligne de travail)
If c > 65536 Or c < 0 Then Exit Sub 'évite le bug
z = 1 'définit la variable z (commence à la colonne 1)
For x = 1 To 256 'boucle sur 256 valeurs (il n'y a que 256 colonnes !)
v = Cells(c, z) 'définit la variable v (valeur de la cellule)
If v = "" Then 'condition : si la cellule est vide
Columns(z).Delete Shift:=xlToLeft 'supprime la colonne z
z = z - 1 'pour éviter le saut d'une colonne
End If 'fin de la condition
z = z + 1 'passe à la colonne suivante
Next x 'prochaine valeur de la boucle
End Sub

À plus,

Robert
 
Bonjour Robert et le forum,

J'ai essayé la macro et ca fonctionne. J'aimerais savoir s'il est possible de spécifier un range à supprimer. Je m'explique: j'aimerais pouvoir supprimer un nombre de lignes donné, par exemple 5. J'ai essayé à partir de la macro que Robert a faite mais ca ne marche pas, j'ai besoin de votre aide.

Voici ce que j'ai fait:

Sub Supprime()
Dim c As Long 'déclare la variable c
Dim i As Integer 'déclare la variable i
Dim v As Variant 'déclare la variable v
Dim v1 As Variant 'déclare la variable v1
Dim x As Integer 'déclare la variable x
Dim z As Integer 'déclare la variable z
Dim d As Integer 'déclare la variable d

d = Range("C2")
c = Range("C1") 'définit la variable c (ligne de travail)
If c > 65536 Or c < 0 Then Exit Sub 'évite le bug
z = 2 'définit la variable z (commence à la colonne 2)
For x = 1 To 256 'boucle sur 256 valeurs (il n'y a que 256 colonnes !)
v = Cells(c, z) 'définit la variable v (valeur de la cellule)
v1 = Cells(c + d, z)
If v = "" Then 'condition : si la cellule est vide
Range(v, v1).Select
Selection.delete Shift:=xlToLeft 'supprime la colonne z sur le nombre de lignes désiré
'Columns(z).delete Shift:=xlToLeft 'supprime la colonne z
z = z - 1 'pour éviter le saut d'une colonne
End If 'fin de la condition
z = z + 1 'passe à la colonne suivante
Next x 'prochaine valeur de la boucle
End Sub

Merci à l'avance pour votre aide.

Rémi
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
719
Réponses
4
Affichages
587
Réponses
8
Affichages
656
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Retour