consolidae de position

  • Initiateur de la discussion Initiateur de la discussion cg1980
  • 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 !

cg1980

XLDnaute Occasionnel
Bonjour,

j'aurais une demande qui requiert du VBA je pense.
En gros voici le problème.

Il y a 2 onglets.

En feuil2, il s'agit d'investissement actuel (situation courante du portefeuille).

En Feuil1, quand il y a un INS en colonne J, ca signifie qu'un nouvel investissement a été fait.

Le nom de l'investissement est en colonne A dans les 2 onglets.

Quand il y a une ligne avec "INS" en Ji dans Feuil1, il faudrait aller copier la cellule ki dans la cellule AS de feuil2 où le code (colonne A) Match entre les 2

Example.
Feuil1, il y a un nouvel investissement en ligne 7(il y a un INS en J7). Donc la cellule k7 doit etre copier dans Feuil2 cellule AS5 (les 2 codes correspondent "AT0000A001X2 Corp" dans les colonnes A des 2 onglets)

Merci beaucoup
 

Pièces jointes

Re : consolidae de position

Bonjour Cg, bonjour le forum,

tu n'as pas expliqué si tu voulais que l'action se fasse automatiquement dès que tu édites INS dans une cellule de la colonne J, ou si tu souhaitais le faire à la fin, avec une macro qui récupère tous les INS...
Ci dessous les deux options, la macro événementielle Change automatique (à placer dans le composant Feuil1(Feuil1)) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range) 'à l'édition dans une cellulle
Dim r As Range 'déclare la variable r (Recherche)
 
If Target.Column <> 10 Then Exit Sub 'si l'édition a lieu ailleurs qu'en colonne J, sort de la procédure
'si l'édition à lieu dans une ligne inférieure à 6 ou supérieure à la dernièr ligne éditée en colonne A, sort de la procédure
If Target.Row < 6 Or Target.Row > Cells(Application.Rows.Count, 1).End(xlUp).Row Then Exit Sub
 
If Target.Value = "INS" Then 'condition 1 : si la valeur de la cellule est "INS"
    'définit la recherche r (dans la colonne A de l'onglet "Feuil2" la valeur correspondant à la colonne A de cel)
    Set r = Sheets("Feuil2").Columns(1).Find(Sheets("Feuil1").Cells(Target.Row, 1), , xlValues, xlWhole)
    If Not r Is Nothing Then 'condition 2 : si il existe au moins une occurrence
        Target.Offset(0, 1).Copy 'copy la colonne K de cel
        r.Offset(0, 44).PasteSpecial (xlPasteValues) 'colle la valeur dans AS de r
    End If 'fin de la condition 2
End If 'fin de la condition 1
End Sub

ou la Macro1 qui récupère tous les INS d'un coup (à placer dans un module) :
Code:
Sub Macro1()
Dim cel As Range 'déclare la variable cel (CELlule)
Dim r As Range 'déclare la variable r (Recherche)
 
'boucle sur toutes les cellules éditées de la colonne J de l'onglet "Feuil1"
For Each cel In Sheets("Feuil1").Range("J6:J" & Sheets("Feuil1").Cells(Application.Rows.Count, 10).End(xlUp).Row)
    If cel.Value = "INS" Then 'condition 1 : si la valeur de la cellule est "INS"
        'définit la recherche r (dans la colonne A de l'onglet "Feuil2" la valeur correspondant à la colonne A de cel)
        Set r = Sheets("Feuil2").Columns(1).Find(Sheets("Feuil1").Cells(cel.Row, 1), , xlValues, xlWhole)
        If Not r Is Nothing Then 'condition 2 : si il existe au moins une occurrence
            cel.Offset(0, 1).Copy 'copy la colonne K de cel
            r.Offset(0, 44).PasteSpecial (xlPasteValues) 'colle la valeur dans AS de r
        End If 'fin de la condition 2
    End If 'fin de la condition 1
Next cel 'prochaine cellule cel de la boucle
End Sub
Tu choisiras celle qui te conviendra le mieux...
 
- 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

Réponses
18
Affichages
602
Réponses
3
Affichages
315
Réponses
2
Affichages
284
Réponses
2
Affichages
429
Retour