validation donnée sous thisworkbook

  • Initiateur de la discussion Initiateur de la discussion legamin
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

legamin

XLDnaute Nouveau
Bonsoir.
Grace au forum et particulièrement à job 75 j’avance pas à pas (pas doué en Visual basic).
Mon souci est le suivant.
-j aimerais pouvoir saisir en validation des donnée sur thisworkbook, des données différentes dans chaque cellule sur la même base de validation des données liste.
Exemple
Cellule $a$1 identique sur les 4 feuilles.
Cellule $a$2 identique sur les 4 feuilles.
Cellule $a$3 ident……. Etc. etc.
Que dois-je rajouter pour rendre ceci possible.
Voici l’exemple en fichier.
Regarde la pièce jointe exemple Classeur.xlsm.
par avance merci.
cordialement j-p.m
 
Re : validation donnée sous thisworkbook

Bonsoir legamin,

On ne peut évidemment pas ouvrir votre fichier 😱 mais j'ai bien compris votre problème.

La macro à placer dans ThisWorkbook :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Dim tablo(), plage As Range, i As Byte
tablo = Array([COLOR="Red"]"Feuil1", "Feuil2", "Feuil3", "Feuil4"[/COLOR]) 'liste des noms des feuilles à traiter
Set plage = Intersect(Source, Sh.Range("[COLOR="red"]A1:A100[/COLOR]")) 'A1:A100 => plage à adapter
If plage Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each Source In plage
  For i = 0 To UBound(tablo)
    Sheets(tablo(i)).Range(Source.Address) = Source
  Next
Next
Application.EnableEvents = True
End Sub

En rouge ce qu'il faut adapter au fichier réel (n'écrivez pas une plage avec un nombre exagéré de cellules...).

Edition : s'il existe d'autres feuilles qui n'ont rien à voir avec celles de la liste, elles ne seront pas modifiées, mais par contre elles modifieront celles de la liste. Il faut alors un test supplémentaire :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Dim tablo(), plage As Range, i As Byte
tablo = Array("Feuil1", "Feuil2", "Feuil3", "Feuil4") 'liste des noms des feuilles à traiter
[COLOR="Red"]If IsError(Application.Match(Sh.Name, tablo, 0)) Then Exit Sub[/COLOR] 'si la feuille mofifiée n'est pas dans la liste
Set plage = Intersect(Source, Sh.Range("A1:A100")) 'A1:A100 => plage à adapter
If plage Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each Source In plage
  For i = 0 To UBound(tablo)
    Sheets(tablo(i)).Range(Source.Address) = Source
  Next
Next
Application.EnableEvents = True
End Sub

A+
 
Dernière édition:
Re : validation donnée sous thisworkbook

Re,

On peut éviter une boucle For/Next de la macro précédente en écrivant :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Dim tablo(), plage As Range, i As Byte
tablo = Array("Feuil1", "Feuil2", "Feuil3", "Feuil4") 'liste des noms des feuilles à traiter
If IsError(Application.Match(Sh.Name, tablo, 0)) Then Exit Sub 'si la feuille mofifiée n'est pas dans la liste
Set plage = Intersect(Source, Sh.Range("A1:A100")) 'A1:A100 => plage à adapter
If plage Is Nothing Then Exit Sub
Application.EnableEvents = False
For i = 0 To UBound(tablo)
  Sheets(tablo(i)).[COLOR="Red"]Range(plage.Address)[/COLOR] = [COLOR="Red"]plage.Value[/COLOR]
Next
Application.EnableEvents = True
End Sub

Nota : j'ai oublié de préciser que plage peut être composée de plusieurs cellules quand on y fait une entrée multiple (Ctrl+Entrée) ou qu'on les efface toutes en même temps.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
654
Réponses
1
Affichages
1 K
Retour