valeur par défaut+liste déroulante

mezzo40

XLDnaute Nouveau
Bonjour,

je rencontre un problème dans l'élaboration de mon projet.
J'ai un classeur avec plusieurs feuilles. Dans ma feuille1, sur de nombreuses cellules j'effectue un choix par le biais d'une liste déroulante.
Ce choix doit se répercuter dans ma feuille2, mais je voudrais garder la possibilité de modifier ce choix par le biais de la meme liste déroulante que celle de ma feuille1.
J'ai essayé d'insérer ma formule (=Feuil1!A1) dans ma liste déroulante mais il n'en veut pas.
La seule solution que j'ai trouvée, c'est de réaliser une liste à part(nommé tache A1 par ex) via Gestionnaire des noms, avec en première valeur de la liste "=Feuil1!A1", puis le reste de ma liste.
Mon problème est que cela ne fonctionne qu'une fois, et que j'ai une multitude de cellules dans ce cas là, et que je me vois mal définir une liste pour chaque cellules concernées.

Un d'entre vous aurait il une idée pour me dépanner?

Je vous joins un fichier allégé pour exemple.Regarde la pièce jointe test menu déroulant.xlsm

Autre question en rapport avec mon projet.Comment définir par défaut la première valeur d'une liste déroulante créée avec Validation des données.

Par avance, je vous remercie pour vos réponses.
 

Pièces jointes

  • test menu déroulant.xlsm
    13.1 KB · Affichages: 34
  • test menu déroulant.xlsm
    13.1 KB · Affichages: 25

PMO2

XLDnaute Accro
Re : valeur par défaut+liste déroulante

Bonjour,

J'ai compris qu'il fallait interagir de la feuille "prévisionnel" et la feuille "réalisé" (et réciproquement).
Comme ces feuilles ont exactement la même structure, voici une piste en VBA

1) copiez le code suivant dans la fenêtre de code de la feuille "prévisionnel"
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim HasValidation&
'---
On Error Resume Next
HasValidation& = Selection.Validation.Type
If Err = 0 Then
  Application.EnableEvents = False
  Sheets("réalisé").Range(Target.Address) = Target
  Application.EnableEvents = True
End If
Err.Clear
On Error GoTo 0
End Sub

2) copiez le code suivant dans la fenêtre de code de la feuille "réalisé"
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim HasValidation&
'---
On Error Resume Next
HasValidation& = Selection.Validation.Type
If Err = 0 Then
  Application.EnableEvents = False
  Sheets("prévisionnel").Range(Target.Address) = Target
  Application.EnableEvents = True
End If
Err.Clear
On Error GoTo 0
End Sub
 

Pièces jointes

  • test menu déroulant_pmo.xlsm
    22.5 KB · Affichages: 31
  • test menu déroulant_pmo.xlsm
    22.5 KB · Affichages: 30
  • test menu déroulant_pmo.xlsm
    22.5 KB · Affichages: 28

mezzo40

XLDnaute Nouveau
Re : valeur par défaut+liste déroulante

Bonjour PMO2,

merci pour ta réponse.
Ça marche très bien. Néanmoins, quelques précisions que je n'avais pas faite dans mon premier message (désolé!!). Il doit y avoir une interactivité entre prévisionnel et réalisé mais pas l'inverse.
C'est à dire que lorsque l'on modifie le choix dans réalisé cela ne doit pas modifier prévisionnel.
De plus, mes feuilles n'ont pas exactement la même structure. La feuille réalisé comporte une colonne de plus ( groupe de 4 colonnes contre 3 pour prévisionnel).Regarde la pièce jointe test menu déroulant_pmo.xlsm
Peut on tout de même adapter ton code à ces conditions?

Merci pour ta réponse.

Mezzo
 

Pièces jointes

  • test menu déroulant_pmo.xlsm
    22 KB · Affichages: 26
  • test menu déroulant_pmo.xlsm
    22 KB · Affichages: 23

PMO2

XLDnaute Accro
Re : valeur par défaut+liste déroulante

Bonjour,

OK, voici le nouveau code (l'ancien code est à supprimer entièrement).

Copiez le code suivant dans la fenêtre de code de la feuille "prévisionnel"
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim HasValidation&
Dim Col&
'---
On Error Resume Next
HasValidation& = Selection.Validation.Type
If Err = 0 Then
  Application.EnableEvents = False
  
  '--- Calcul de l'Offset de la colonne selon les cas ---
  If Target.Column Mod 3 <> 0 Then
    Col& = Target.Column \ 3
  Else
    Col& = Target.Column \ 4
  End If
  '-------------------------------------------------------
  
  Sheets("réalisé").Range(Target.Address).Offset(0, Col&) = Target
  Application.EnableEvents = True
End If
Err.Clear
On Error GoTo 0
End Sub
 

Pièces jointes

  • test menu déroulant_pmo 2.00.xlsm
    20.2 KB · Affichages: 26

mezzo40

XLDnaute Nouveau
Re : valeur par défaut+liste déroulante

Re,

Encore une petite question concernant l'utilisation.
Je développe cet outil pour d'autres utilisateurs.Pour faciliter et accélérer la saisie des éléments , ils feront fréquemment des copier/coller dans le prévisionnel (mon dossier exemple étant beaucoup plus réduit).
Or dans ce cas là, j'ai remarqué que la modif dans réalisé ne se faisait pas. Il faut faire la saisie liste par liste.
J'ai essayé de rajouter un "Active Sheet" dans le code mais cela me renvoie un message d'erreur.

Y a t'il une astuce pour cela?

Merci pour ton aide.

Mezzo
 

Statistiques des forums

Discussions
312 302
Messages
2 087 035
Membres
103 436
dernier inscrit
PascalH