Remplissage cellule

Bonjour,

Je voudrais savoir si il est possible de faire ceci sur excel :

Dans la cellule A1 de la feuille 1 je voudrais mettre en place une liste déroulante mais si la cellule A1 de la feuille 2 contient une valeur alors je voudrais que cette valeur soit automatiquement coller dans la cellule A1 de la feuille 1 et si A1 de la feuille 2 ne contient aucune valeur alors la cellule A1 de la feuille 1 m'affiche la liste déroulante.

Cordialement

Bonjour Mickael, bonjour le forum,

je pourrais te proposer une solution VBA si ça te convient et si tu fournis un fichier avec la liste déroulante...

Bonjour ThauThème,

voici mon classeur en PJ avec la liste déroulante et l'architecture ta proposition en VBA m'intéresse

Merci

Re,

Le code agit au changement de la cellule A1 de l'onglet Feuil2

Private Sub Worksheet_Change(ByVal Target As Range)
Dim OD As Worksheet 'déclare la variable OD (Onget Destination)
Dim OB As Worksheet 'déclare la variable OB (Onget Base)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim L As String 'déclare la variable L (Liste)

If Target.Address <> "$A$1" Then Exit Sub 'si le changement a lieu ailleurs qu'en A1, sort de la procédure
Set OD = Worksheets("Feuil1") 'définit l'onglet OD
Set OB = Worksheets("BD") 'définit l'onglet OB
DL = OB.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet OB
TV = Application.Transpose(OB.Range("A1").CurrentRegion) 'définit le tableau des valeurs TV
L = Join(TV, ",") 'définit la liste L
If Target.Value <> "" Then 'condition : si A1 n'est pas vide
    OD.Range("A1").Validation.Delete 'supprime la validation de données de la cellule A1 de l'onglet OD (Feuil1)
    OD.Range("A1").Value = Target.Value 'donne à la cellule A1 de l'onglet OD (feuil1) la valeur de A1 de cet onglet (Feuil2)
Else 'sinon
    OD.Range("A1").Value = "" 'efface la valeur de la cellule A1 de l'onglet OD (Feui1)
    With OD.Range("A1").Validation 'prend en compte la validation de données de la cellule A1 de l'onglet OD (Feuil1)
        .Delete 'supprime une éventuelle ancienne validation de données
        .Add xlValidateList, Formula1:=L 'définit la liste L comme liste de validation de données
    End With 'fin de la prise en compte de la validation de données de la cellule A1 de l'onglet OD (Feuil1)
End If 'fin de la condition
End Sub

Mais j'ai rencontré un petit souci. Malgré que la validation de données soit supprimée si A1 de Feuil2 était vide, quand on activait l'onglet Feuil1 elle apparaissait encore. Pour quelle disparaisse vraiment il fallait juste déplacer la cellule active. Alors j'ai rajouté le bout de code ci-dessous dans l'onglet Feuil1 pour contourner le problème :

Private Sub Worksheet_Activate()
ActiveCell.Offset(1, 0).Select
ActiveCell.Offset(-1, 0).Select
End Sub

J'espère que tu n'as pas une événementielle Change dans cet onglet...

Le fichier :

Bonjour, Salut ThauThème,

Un essai à tester dans le fichier ci-joint.

Salut mickaeldu45, ThauThème, le fil

Tu peux aussi utiliser la validation de données dans l'évènement Change de ta Feuil2 comme ceci;

Private Sub Worksheet_Change(ByVal Target As Range)
    With Worksheets("Feuil1").Range("A1")
        Select Case Target.Address
    'Gestion des Cellules
            Case "$A$2"
                If Target.Value = "" Then
                    .Value = ""
                    With .Validation
                        .Delete
                        .Add Type:=xlValidateList, Formula1:="Liste1,Liste2,Liste3"
                    End With
                Else
                    With .Validation
                        .Delete
                        .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _
                                                                                      :=xlBetween
                    End With
                    .Value = Worksheets("Feuil2").Range("A2")
                End If
            Case "$B$3"
                MsgBox "c'est la cellule d'à coté la bonne"
            Case Else

        End Select

    End With
End Sub
Rechercher des sujets similaires à "remplissage"