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

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 !

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 ?

Ouaaah ! Merci merci merci !

Vos trois solutions fonctionnent. C'est mes collègues qui vont être contents !

J'en apprends tous les jours grâce à vous !
 

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...
 

SOYA

XLDnaute Occasionnel
Re : rendre un code VBA interactif ?

Je me confonds en excuses bien sincères... J'avais oublié le petit bout If x = 0 Then Exit Sub

Ha la la, ces débutants !

Merci mille fois !
 

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:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…