rendre un code VBA interactif ?

SOYA

XLDnaute Occasionnel
Bonjour !

Dans le code ci-dessous, je supprime toutes les lignes dont la cellule en D est vide.

Sub test()
Dim i As Integer
For i = 7344 To 6 Step -1
If IsEmpty(Cells(i, 4)) Then Rows(i).Delete
Next i
End Sub

Est-il possible, au moment de l'exécution (par bouton dans la barre d'outils), d'avoir une fenêtre de dialogue qui demande quelle est la colonne de critère, plutôt que d'aller chaque fois modifier le code "à la main" ?

En fait, j'aimerais que (Cells(i, 4)) devienne une variable... Si c'est bien compliqué, ne vous fatiguez pas. Mais si c'est une partie de rigolade, j'aimerais bien apprendre à rire aussi ! :D

Merci beaucoup à l'avance !
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : rendre un code VBA interactif ?

Bonjour

essaies

Sub test()
Dim i As Integer, x as byte
x= inputbox("quelle colonne en nombre ?")
For i = 7344 To 6 Step -1
If IsEmpty(Cells(i, x)) Then Rows(i).Delete
Next i
End Sub
 

RENAUDER

Nous a quitté
Repose en paix
Re : rendre un code VBA interactif ?

Bonjour,

Code:
Sub test()
    Dim i As Integer
    Set Cell = Application.InputBox("Sélectionner la colonne", "Sélection d'une colonne", Type:=8)
    Col = Cell.Column
    For i = 7344 To 6 Step -1
        If IsEmpty(Cells(i, Col)) Then Rows(i).Delete
    Next i
End Sub
 

SOYA

XLDnaute Occasionnel
Re : rendre un code VBA interactif ?

Bonjour

essaies

Sub test()
Dim i As Integer, x as byte
x= inputbox("quelle colonne en nombre ?")
For i = 7344 To 6 Step -1
If IsEmpty(Cells(i, x)) Then Rows(i).Delete
Next i
End Sub

Bonjour Pascal,

Dans ton exemple ci-dessus, lorsqu'on clique sur "Annuler" au lieu de saisir un numéro de colonne, on obtient un message de débogage. Que manque-t-il pour que le bouton "Annuler" fonctionne ?

Merci !
 

kjin

XLDnaute Barbatruc
Re : rendre un code VBA interactif ?

Bonsoir,
Pour gérer l'erreur de saisie ou l'annulation
Code:
Sub test()
Dim i As Integer, x As Byte
On Error Resume Next
x = InputBox("quelle colonne en nombre ?")
If x = 0 Then Exit Sub
For i = 7344 To 6 Step -1
If IsEmpty(Cells(i, x)) Then Rows(i).Delete
Next i
End Sub
A+
kjin
 

SOYA

XLDnaute Occasionnel
Re : rendre un code VBA interactif ?

Merci pour ton aide Kjin, mais avec cette modification, lorsque je clique sur "Annuler", le code efface toutes les lignes de mon tableau ! Il doit encore manquer un petit quelque chose...
 

vbacrumble

XLDnaute Accro
Re : rendre un code VBA interactif ?

Bonsoir


Une autre approche (le choix de la colonne se fait à la souris)

Code:
Sub test()'décalage vers le haut des cellules vides
Dim ncol As Range
On Error Resume Next
Set ncol = _
Application.InputBox(prompt:="Sélectionner entete de colonne", Title:="Selection", Type:=8)
Columns(Split(ncol.Address, "$")(1)).SpecialCells(xlCellTypeBlanks).Delete shift:=xlUp
End Sub
Code:
Sub test2()'suppression lignes
Dim ncol As Range
On Error Resume Next
Set ncol = _
Application.InputBox(prompt:="Sélectionner entete de colonne", Title:="Selection", Type:=8)
Columns(Split(ncol.Address, "$")(1)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz