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

XL 2016 Remplir un tableau en fonction de la valeur d'une cellule

xamenod

XLDnaute Junior
Bonsoir,
A l'aide d'une macro, je désire remplir les cellules d'un tableau en colonne I en regard de la valeur de la cellule D5.
Je joint un fichier avec des explications plus claires.
Merci pour votre aide.
Bon weekend.

 

Pièces jointes

  • test.xlsm
    14.9 KB · Affichages: 16

soan

XLDnaute Barbatruc
Inactif
Bonsoir xamenod,

ton fichier en retour.

formule en i5 (déjà tirée vers le bas jusqu'en i8) :


=SI(D$5=H5;E$5;"")

je te laisse tester en choisissant successivement
les 4 valeurs A, B, C, D, de la liste déroulante.

bon weekend à toi aussi.


soan
 

Pièces jointes

  • test.xlsm
    13.9 KB · Affichages: 3

xamenod

XLDnaute Junior
Bonsoir Soan,
Merci pour ton retour. J'ai envisagé cette solution.
J'ai une macro qui fait le boulot mais qui est un peu longue.
Cela fait if range(d5) =À then
Range i5 = Range e5
If range(d5) =B then
Range i6 = range e5
Etc
J'écris avec mon téléphone, d'où les erreurs dans l'exemple de la macro. J'ai dans la liste de roulante une trantaine de choix. Je cherche à remplacer la longue instruction par une macro plus efficace et plus courte pour l'intégrer à un ensemble d'exécutions. Merci de ton aide.
Bonne soirée.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @xamenod,

Un essai dans le fichier joint via macro dans le module associé à la feuille.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Range("d5"), Target) Is Nothing Then Range("e5").ClearContents: Application.EnableEvents = True: Exit Sub
If Not Intersect(Range("e5"), Target) Is Nothing Then
   Application.EnableEvents = False
   Cells(Application.Match(Range("d5").Value, Range("h:h"), 0), "i") = Range("e5")
   Range("d5:e5").ClearContents
   Application.EnableEvents = True
End If
Application.EnableEvents = True
End Sub
 

Pièces jointes

  • xamenod- test- v1.xlsm
    16.5 KB · Affichages: 3

xamenod

XLDnaute Junior
Bonsoir ma pomme,
Merci pour ta réponse. Cela fonctionne.
S'il y a une valeur dans une cellule de la colonne I, j'ai besoin de l'additionner avec la nouvelle valeur en e5.
Merci pour ton aide.
J'ai trouvé comment additionner la nouvelle valeur avec celle déjà en I.
Merci beaucoup.
Bon week-end.
Henry.
 

soan

XLDnaute Barbatruc
Inactif
Bonjour @xamenod, mapomme, le fil,

bon week-end, et désolé pour le retard de ma réponse, Henry.

en D5 : « A » ; met des nombres en E5 ; ils seront additionnés en i5 ;
si tu veux annuler un nombre qui a déjà été additionné, saisis-le en
négatif, par exemple -5 ; il sera alors retranché de la somme, car
total + (-5) = total - 5.




si tu changes D5, alors E5 est effacé ; puis les nombres que tu saisis
en E5 sont additionnés dans la bonne case de la colonne i, selon D5.

si tu mets d'autres cases sous H8:i8, elles seront prises en compte.

si tu saisis une valeur non numérique en E5, elle sera ignorée ;
si tu effaces D5 ou E5, il n'y aura aucun effet en colonne i.




SI tes données en colonne H sont toujours les mêmes que celles de
ta colonne R, dans le même ordre, alors tu peux construire ta liste
de D5 avec tes données de la colonne H ; utilise une plage nommée
pour prendre en compte l'extension de la liste, si ajouts ultérieurs ;
plage actuelle : H5:i8 ; supprime la colonne R devenue inutile.




code VBA du module de Feuil1 :

VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
    If .CountLarge > 1 Then Exit Sub
    If .Address = "$D$5" Then .Offset(, 1).ClearContents: Exit Sub
    If .Address <> "$E$5" Then Exit Sub
    Dim chn$: chn = .Offset(, -1)
    If IsEmpty(.Value) Or chn = "" Then Exit Sub
    If Not IsNumeric(.Value) Then Exit Sub
    Dim cel As Range, dlg&, lig%
    dlg = Cells(Rows.Count, 8).End(3).Row: If dlg < 5 Then Exit Sub
    Set cel = Range("H5:H" & dlg).Find(chn, , -4163, 1, 1)
    If cel Is Nothing Then Exit Sub
    lig = cel.Row: Cells(lig, 9) = Cells(lig, 9) + .Value
  End With
End Sub

si besoin, tu peux demander une adaptation.
à te lire pour avoir ton avis.


soan
 

Pièces jointes

  • test.xlsm
    17.2 KB · Affichages: 2

xamenod

XLDnaute Junior
B
Bonjour Soan, merci beaucoup pour ton code, il fonctionne parfaitement.
Je te souhaite une bonne soirée. Henry.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…