Extraction dynamique

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 !

jeanlouispaf

XLDnaute Nouveau
Bonjour à tous les excelliens

Je souhaite modifier une macro de l'excellentissime J. Boisgontier.
Malheureusement je me heurte à chaque fois à la même réponse.
Dans le fichier joint, je souhaite procéder à une extraction dynamique.
Dès qu'une nouvelle valeur est inscrite en colonne C, elle doit s'ajouter à la liste de valeurs en colonne I.
J'ai beau changer le paramètre "Target.Column = 2" en remplaçant la valeur 2 par 3, la colonne I s'enrichit toujours de la valeur de la colonne 2.
Je vous remercie de votre aide précieuse.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 And Target.Count = 1 Then
Application.EnableEvents = False
'[G3] = Empty
[A1😀1000].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[I1], Unique:=True
[I2:I1000].Sort Key1:=[I2]
Application.EnableEvents = True
End If
'--- extraction des personnes d'un service
Set f = Sheets("bd")
If Target.Address = "$G$3" And [G3] <> "" Then
temp = Target.Value
témoin = False
For i = 1 To Sheets.Count
If Sheets(i).Name = temp Then témoin = True
Next i
If Not témoin Then
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = temp
Else
Sheets(temp).Select
End If
f.[A1😀1000].AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=f.[G2:G3], _
CopyToRange:=Sheets(temp).[A1😀1]
[A2😀1000].Sort Key1:=[A2]
End If
End Sub
 

Pièces jointes

Re : Extraction dynamique

Bonjour tous
Je pense avoir compris
Si c'est le cas ceci doit faire.
Macro à remplacer en Workseet_Change
Bruno
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Or Target = "" Then Exit Sub
  If Target.Column <> 3 Or Target.Offset(0, -1) = "" Then Exit Sub
   If Application.CountIf(Range("I2:I" & [I65000].End(3).Row), Target.Offset(0, -1)) = 0 Then
    Cells([I65000].End(3).Row + 1, 9) = Target.Offset(0, -1)
   End If
End Sub
Le fichier
 

Pièces jointes

Re : Extraction dynamique

Merci pour vos réponses.
En fait je souhaite savoir comment récupérer la valeur de la colonne 3 lorsque je la valide et que cette valeur n'existe pas dans la colonne I.
Actuellement c'est la valeur de la colonne 2 qui est prise en compte. Et je n'arrive pas à transformer le code VBA d'origine pour récupérer la valeur de la colonne 3.
il ne s'agit pas de mélanger les colonnes services (colonne B) et salaires (colonne C).
Seul le résultat de la colonne 3 m'intéresse.
Merci.
 
Re : Extraction dynamique

Dans ton premier post, je lis :

Dès qu'une nouvelle valeur est inscrite en colonne C, elle doit s'ajouter à la liste de valeurs en colonne I.

Je comprends que si je saisis 3000 en C13 (par exemple), je veux le retrouver en I5

a+
 
Re : Extraction dynamique

Je vous remercie encore. Voici la solution que m'a transmis Banzaï64 sur un autre forum.

"Après avoir changé le 2 en 3, modifies le nom de la colonne I : De Service à Salaire (le nom doit être identique à la cellule C1)"

cela fonctionne impeccablement.
Encore merci.
 
- 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 worksheet_change
Réponses
29
Affichages
479
Réponses
3
Affichages
504
Retour