VBA + liste deroulante

Bonjour à tous,

Je cherche à créer une macro plutôt simple en théorie mais je bloque et je suis pris par le temps, de ce fait j'aurai besoin de votre aide d'expert.

Je veux créer une macro qui pour chaque cellule vide dans une sélection me mettent une liste déroulante.

J'ai tenté avec FOR EACH, WHILE et IF mais je dois mal faire les choses.

Voici la macro, je sais que le IF est faux, c'était ma dernière tentative avant de laisser tomber :)

Merci d'avance pour votre aide.

ActiveSheet.Select

'If cell.Value = 0 Then

With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=Feuil3!$A$2:$A$4"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With

End If
'Next cell

End Sub

Bonjour,

Essaie avec ce code, une fois la plage de cellules sélectionnée :

Sub Macro1()
With Selection.SpecialCells(xlCellTypeBlanks)
    With .Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=Feuil3!$A$2:$A$4"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End With
End Sub

Merci beaucoup ça marche très bien mais j'ai un petit problème :

VBA ne considère pas que la cellule est vide si une formule dit que c'est vide, je m'explique

J'ai cette formule dans chaque cellule et le "" vba ne considère pas que c'est vide.

=SI(RECHERCHEV(Feuil1!$A2;'EXP PLANIF'!$B:$AS;8;FAUX)=0;""; RECHERCHEV(Feuil1!$A2;'EXP PLANIF'!$B:$AS;8;FAUX))

On peut mettre n'importe quoi à la place de "" mais faudra adapter la macro.

Re-,

peut-être ainsi (plage à adapter)

Sub Remplit_vides()
Dim Plg As Range
Dim Cel As Range
Set Plg = Range("A1:D9")
For Each Cel In Plg
    With Cel
        If .Value = "" Then
            With .Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                    xlBetween, Formula1:="=Feuil3!$A$2:$A$4"
            End With
        End If
    End With
Next Cel
End Sub

Parfait merci beaucoup, ça marche nickel :)

Rechercher des sujets similaires à "vba liste deroulante"