incerer une condition VBA

garrec

XLDnaute Occasionnel
Bonjour

Mon code ci dessous me permet de tirer un tableau plus succint d'un onglet à un autre

Code:
Sub Macro1()
  Dim ad As Range 'déclare la variable ad (Anciennes Données)
  Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
  Dim pl As Range 'déclare la variable pl (PLage)
  Dim cel As Range 'déclare la variable cel (CELlule)
  Dim dest As Range 'déclare la variable dest (cellule de DESTination)
 
 
 Set ad = Sheets("Port_MOMENTUM").Range("BT173").CurrentRegion 'définit la plage des anciennes données
  If ad.Rows.Count > 1 Then 'condition : si ad contient plus d'une seule ligne
      Set ad = ad.Offset(1, 0).Resize(ad.Rows.Count - 1, ad.Columns.Count) 'redéfinit ad (sans la première ligne)
      ad.Clear 'efface ad
  End If 'fin de la condition
 
 
 With Sheets("Daily Equity")  'prend en compte l'onglet "Feuil1"
      dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne A
 
 
     Set pl = .Range("A2:A" & dl) 'définit la plage pl
 
 End With 'fin de la prise en compte de l'onglet "Feuil1"
  For Each cel In pl 'boucle sur toutes les cellule cel de la plage pl
      'condition : si la date correspond
 
      If Day(cel.Value) = Day(Date) And Month(cel.Value) = Month(Date) And Year(cel.Value) = Year(Date) Then
          'définit la cellle de destination
          Set dest = IIf(Sheets("Port_MOMENTUM").Range("BT173") = "", Sheets("Port_MOMENTUM").Range("BT173"), Sheets("Port_MOMENTUM").Cells(Application.Rows.Count, 72).End(xlUp).Offset(1, 0))
          dest.Value = cel.Value 'récupère la date
          dest.Offset(0, 1).Value = cel.Offset(0, 4).Value 'récupère le code isin
          dest.Offset(0, 2).Value = cel.Offset(0, 3).Value 'reçupère le nom de la valeur
          dest.Offset(0, 3).Value = cel.Offset(0, 12).Value 'récupère la devise
          dest.Offset(0, 4).Value = cel.Offset(0, 11).Value 'récupère la quantité
          dest.Offset(0, 5).Value = cel.Offset(0, 6).Value 'récupère le sens
          dest.Offset(0, 6).Value = cel.Offset(0, 15).Value 'récupère le cours
      End If 'fin de la condition
  Next cel 'prochaine celllule de la boucle
  End Sub

Voici un exemple avec un fichier excel ci dessous!


J'aimerais maintenant rajouté une deuxieme condition a ce code

Si dans la colonne B il y a marqué Momentum alors on reprend la ligne dans le tableau plus succint sinon non :D

Thanks in advance

Bonne journée ;)
 

Pièces jointes

  • VL ESAAI.xlsx
    152.8 KB · Affichages: 53
  • VL ESAAI.xlsx
    152.8 KB · Affichages: 54
  • VL ESAAI.xlsx
    152.8 KB · Affichages: 54

Robert

XLDnaute Barbatruc
Repose en paix
Re : incerer une condition VBA

Bonjour garrec, bonjour le forum,

Bizarre que tu aies réussi à adapter le code et pas à ajouter une condition...
Code:
If Day(cel.Value) = Day(Date) And Month(cel.Value) = Month(Date) And Year(cel.Value) = Year(Date) And cel.Offset(0, 1).Value = "Momentum" Then

Le code entier :
Code:
Sub Macro1()
Dim ad As Range 'déclare la variable ad (Anciennes Données)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
Set ad = Sheets("Port_MOMENTUM").Range("BT173").CurrentRegion 'définit la plage des anciennes données

If ad.Rows.Count > 1 Then 'condition : si ad contient plus d'une seule ligne
    Set ad = ad.Offset(1, 0).Resize(ad.Rows.Count - 1, ad.Columns.Count) 'redéfinit ad (sans la première ligne)
    ad.Clear 'efface ad
End If 'fin de la condition

With Sheets("Daily Equity")  'prend en compte l'onglet "Daily Equity"
    dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne A
    Set pl = .Range("A2:A" & dl) 'définit la plage pl
End With 'fin de la prise en compte de l'onglet "Daily Equity"

For Each cel In pl 'boucle sur toutes les cellule cel de la plage pl
    'condition : si la date correspond ei si en B il y a "Momentum"
    If Day(cel.Value) = Day(Date) And Month(cel.Value) = Month(Date) And Year(cel.Value) = Year(Date) And cel.Offset(0, 1).Value = "Momentum" Then
        'définit la cellle de destination
        Set dest = IIf(Sheets("Port_MOMENTUM").Range("BT173") = "", Sheets("Port_MOMENTUM").Range("BT173"), Sheets("Port_MOMENTUM").Cells(Application.Rows.Count, 72).End(xlUp).Offset(1, 0))
        dest.Value = cel.Value 'récupère la date
        dest.Offset(0, 1).Value = cel.Offset(0, 4).Value 'récupère le code isin
        dest.Offset(0, 2).Value = cel.Offset(0, 3).Value 'reçupère le nom de la valeur
        dest.Offset(0, 3).Value = cel.Offset(0, 12).Value 'récupère la devise
        dest.Offset(0, 4).Value = cel.Offset(0, 11).Value 'récupère la quantité
        dest.Offset(0, 5).Value = cel.Offset(0, 6).Value 'récupère le sens
        dest.Offset(0, 6).Value = cel.Offset(0, 15).Value 'récupère le cours
    End If 'fin de la condition
Next cel 'prochaine celllule de la boucle

End Sub
 

garrec

XLDnaute Occasionnel
Re : incerer une condition VBA

Merci encore Robert!


En fait je voyais ou rajouter la condition mais ça ne fonctionnait pas les boucle avec de telle condition je l'ai fait comme ceci normalement

For i= ... TO ....

If .... Then

.....

End if

Next


Mais la la structure etait différente :)


Encore enormement merci et bne journée
 

Legolas

XLDnaute Occasionnel
Re : incerer une condition VBA

Bonjour,

Je vous propose un autre code, peut être plus facilement adaptable aux futures évolutions...
A vous de voir.

Sub test()

Application.ScreenUpdating = False

Dim tabv1(0 To 5000, 0 To 100)

'nettoyage ancinne zone (suppose que la zone commence en BT173 et que la dernière colonne soit BZ)
Worksheets("Port_MOMENTUM").Select
der_ligne = Range("BT65000").End(xlUp).Row

If der_ligne > 173 Then
Range(Cells(173, 72), Cells(der_ligne, 78)).Clear

Range("BT171:BZ171").Select
Selection.Copy
Range(Cells(174, 72), Cells(der_ligne, 78)).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

End If


'récupération nouvelles données
Worksheets("Daily Equity").Select

i = 2
k = 0
Do While Cells(i, 1) <> ""
'date_jour = Right(Left(Cells(i, 1), 5), 2) & "/" & Left(Cells(i, 1), 2) & "/" & Right(Left(Cells(i, 1), 10), 4)
date_jour = CDate(Left(Cells(i, 1), 10))
If date_jour = Date And Cells(i, 2) = "Momentum" Then
tabv1(k, 0) = Cells(i, 1) 'date
tabv1(k, 1) = Cells(i, 5) 'code isin
tabv1(k, 2) = Cells(i, 4) 'nom de la valeur
tabv1(k, 3) = Cells(i, 13) 'devise
tabv1(k, 4) = Cells(i, 12) 'qté
tabv1(k, 5) = Cells(i, 1) 'sens ?
tabv1(k, 6) = Cells(i, 1) 'A/V ?

k = k + 1
End If

i = i + 1
Loop

'restitution des données
Worksheets("Port_MOMENTUM").Select
If k <> 0 Then
Range(Cells(173, 72), Cells(173 + k - 1, 78)).Resize(k, 7) = tabv1

Range("BT173:BZ173").Select
Selection.Copy
Range(Cells(173, 72), Cells(173 + k - 1, 78)).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End If

Application.ScreenUpdating = True
End Sub


Je vous mets le fichier test en pièce jointe.
A+
 

Pièces jointes

  • VL_test.xlsm
    160.4 KB · Affichages: 48

Robert

XLDnaute Barbatruc
Repose en paix
Re : incerer une condition VBA

Bonjour le fil, bonjour le forum,

@Legolas : oui très bonne idée de passer par un tableau mais tu le dimensionnes un peu au hazard. Ça doit être ça les futures évolutions...
Sinon, pas trop aimé les variables non déclarées, les Select inutiles, le nettoyage des anciennes données...
À quoi servent ces lignes ? :
Code:
[I]Range("BT171:BZ171").Select
Selection.Copy
Range(Cells(174, 72), Cells(der_ligne, 78)).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False[/I]
 

Legolas

XLDnaute Occasionnel
Re : incerer une condition VBA

Robert,

Le tableau est complétement dimensionné au hasard, ne connaissant pas la taille des données réelles.
Dans l'exemple donné, il aurait pu être limité à 50 lignes et 7 colonnes...
J'aime bien passer par les tableaux, je trouve ça plus facile à adapter (et aussi assez rapide...)

Pour les variables non déclarées, c'est une mauvaise habitude. Excel "comprend" sans ces lignes de déclaration alors je m'en passe... c'est pas bien mais bon, tant que ça marche.

Je suis pas encore un expert, donc si tu veux bien m'expliquer en quoi les Select sont inutiles ? Tu aurais mis quoi à la place ?

Pour ce qui est des copier coller (format) : c'est juste pour respecter le fond gris du fichier qui était donné (et l'enlever lorsque l'on ajoute les données).
Pour mon usage personnel, ces lignes n'auraient jamais existé... ^^

A plus
 

garrec

XLDnaute Occasionnel
Re : incerer une condition VBA

Merci a tous les deux.

Legolas ton code marche aussi tres bien mais maintenant que j'ai passé plusieures heures sur le code de Robert et que je l'ai bien compris.... Mais c'est assez enrichissant de voir 2 façon de faire.

Sinon j'aurais voulu savoir pour une derniere modif!

Si le Sheets ("Daily Equity") est dans un autre fichier. En loccurence un fichier nommé KARA_VIEW_GP pour aller le recuperer devant chaque Sheets(Daily Equity") je rajoute '[KARA_VIEW_GP.xls]?

Et au début du code je dois mettre quelque chose comme ça? Workbooks.Open Filename:= _
"Z:\le chemin\le chemin\KARA_VIEW_GP.xls"?


MERCI

BONNE FIN DE JOURNEE :D
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : incerer une condition VBA

Bonjour le fil, bonjour le forum,

Je suis pas encore un expert, donc si tu veux bien m'expliquer en quoi les Select sont inutiles ? Tu aurais mis quoi à la place ?

@Legolas
Je suis loin d'être un expert mais c'est une des premières choses que j'ai apprise dans ce forum par des experts justement. Les Select ralentissent le code et la plupart du temps on peut sans passer en utilisant des With... End With ou en les supprimant. Je reprends un bout de ton code :
Code:
With Worksheets("Port_MOMENTUM")
    der_ligne = .Range("BT65000").End(xlUp).Row
    If der_ligne > 173 Then
        .Range(.Cells(173, 72), .Cells(der_ligne, 78)).Clear
        .Range("BT171:BZ171").Copy
        .Range(.Cells(174, 72), .Cells(der_ligne, 78)).PasteSpecial Paste:=xlPasteFormats, _
           Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    End If
End With
La seconde c'est qu'il fallait déclarer les variables pour éviter les bugs et aussi pour rendre ton code plus lisible à d'éventuels utilisateurs...

@Garrec
Si l'autre classeur est ouvert, ça donne :
Code:
Workbooks("KARA_VIEW_GP.xls").Sheets("Daily Equity")
ou alors :
Code:
Dim cl as Workbook
Set cl = Workbooks("KARA_VIEW_GP.xls")
cl.Sheets("Daily Equity")
Et pour finir, il serait bon, quand tu ouvres ul fil que tu poses directement les bonnes questions, ça évite les pertes de temps...
 

garrec

XLDnaute Occasionnel
utiliser les données d'un fichier dans un autre

Re

Oui mais bon petit a petit c'est bien aussi car tout ne marche jamais du premier coup, alors autant courir une chose à la fois non?;)

Et puis c'est plus simple de dire au début que c'est sur le même fichier pour envoyer l'exemple ect ect. Bref encore une fois j'ai reussi grâce a toi. Voici le code

Code:
Sub Macro1()
 Dim ad As Range 'déclare la variable ad (Anciennes Données)
 Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
 Dim pl As Range 'déclare la variable pl (PLage)
 Dim cel As Range 'déclare la variable cel (CELlule)
 Dim dest As Range 'déclare la variable dest (cellule de DESTination)
 Dim cl As Workbook
 
 Set cl = Workbooks("KARA_VIEW_GP.xls")
 
 Set ad = Sheets("Port_MOMENTUM").Range("BT173").CurrentRegion 'définit la plage des anciennes données
 
'If ad.Rows.Count > 1 Then 'condition : si ad contient plus d'une seule ligne
    ' Set ad = ad.Offset(1, 0).Resize(ad.Rows.Count - 1, ad.Columns.Count) 'redéfinit ad (sans la première ligne)
     'ad.Clear 'efface ad
'End If 'fin de la condition
 
With cl.Sheets("Daily Equity")  'prend en compte l'onglet "Daily Equity"
     dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne A
     Set pl = .Range("A3000:A" & dl) 'définit la plage pl
 End With 'fin de la prise en compte de l'onglet "Daily Equity"
 
For Each cel In pl 'boucle sur toutes les cellule cel de la plage pl
     'condition : si la date correspond ei si en B il y a "Momentum"
     If Day(cel.Value) = Day(Date) And Month(cel.Value) = Month(Date) And Year(cel.Value) = Year(Date) And cel.Offset(0, 1).Value = "Momentum" Then
         'définit la cellle de destination
         Set dest = IIf(Sheets("Port_MOMENTUM").Range("BT173") = "", Sheets("Port_MOMENTUM").Range("BT173"), Sheets("Port_MOMENTUM").Cells(Application.Rows.Count, 72).End(xlUp).Offset(1, 0))
         dest.Value = cel.Value 'récupère la date
         dest.Offset(0, 1).Value = cel.Offset(0, 4).Value 'récupère le code isin
         dest.Offset(0, 2).Value = cel.Offset(0, 3).Value 'reçupère le nom de la valeur
         dest.Offset(0, 3).Value = cel.Offset(0, 12).Value 'récupère la devise
         dest.Offset(0, 4).Value = cel.Offset(0, 11).Value 'récupère la quantité
         dest.Offset(0, 5).Value = cel.Offset(0, 6).Value 'récupère le sens
         dest.Offset(0, 6).Value = cel.Offset(0, 15).Value 'récupère le cours
     End If 'fin de la condition
 Next cel 'prochaine celllule de la boucle
 
End Sub

Mais j'ai l'impression qu'il faut que KARA_VIEW_GP soit ouvert non? Sinon

ça me met une erreur dans le code en me disant

Code:
Set cl = Workbooks("KARA_VIEW_GP.xls")
n'appartient pas à la selection?


Etrange?

Thanks in advance
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : incerer une condition VBA

Bonjour le fil, bonjkour le forum,

Garrec à dit:
Oui mais bon petit a petit c'est bien aussi car tout ne marche jamais du premier coup, alors autant courir une chose à la fois non?;)
Et puis c'est plus simple de dire au début que c'est sur le même fichier pour envoyer l'exemple ect ect. Bref encore une fois j'ai reussi grâce a toi. Voici le code
Ben non justement ! La méthode peut -ête complètement différente et il vaut mieux poser la question qui correspond à ton cas plutôt que de dire Ha ben en fait il y a une autre condition... puis Ha ben les données sont dans un autre classeur ... Mais tu as raison d'abuser puisqu'il y a des imbéciles, comme moi, qui continuent a t'aider...
@Garrec
Si l'autre classeur est ouvert, ça donne...

Une aide que, visiblement tu ne prends même pas le temps de lire...
 

garrec

XLDnaute Occasionnel
Bonjour Robert!

Mais non ça m'aide trop c'est sympa. Mais en même temps petit a petit je comprend mieux. Mais tu as raison la prochaine fois je met toute les conditions -cash d'un coup- mais ça risque d'etre indigeste :) ;)

D'ailleur dis moi dans ton code là. J'ai changé les onglets et les cellules du tableau finale (AB=28 par exemple ect ect). ça semble tres bien marché pour la 1ere ligne qui s'affiche en AB5 mais la deuxieme et les autre viennent en AB182!!!! Alors là je t'avouerais que je ne vois pas pourquoi?

Code:
ub Macro1()
 Dim ad As Range 'déclare la variable ad (Anciennes Données)
 Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
 Dim pl As Range 'déclare la variable pl (PLage)
 Dim cel As Range 'déclare la variable cel (CELlule)
 Dim dest As Range 'déclare la variable dest (cellule de DESTination)
 Dim cl As Workbook
 
 Set cl = Workbooks("KARA_VIEW_GP.xls")
 
 Set ad = Sheets("Port_Bellecour").Range("AB5").CurrentRegion 'définit la plage des anciennes données
 
'If ad.Rows.Count > 1 Then 'condition : si ad contient plus d'une seule ligne
    ' Set ad = ad.Offset(1, 0).Resize(ad.Rows.Count - 1, ad.Columns.Count) 'redéfinit ad (sans la première ligne)
     'ad.Clear 'efface ad
'End If 'fin de la condition
 
With cl.Sheets("Daily Equity")  'prend en compte l'onglet "Daily Equity"
     'dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne A
     Set pl = .Range("A2:A15000") 'définit la plage pl
 End With 'fin de la prise en compte de l'onglet "Daily Equity"
 
For Each cel In pl 'boucle sur toutes les cellule cel de la plage pl
     'condition : si la date correspond et si en B il y a "Momentum"
     If Day(cel.Value) = Day(Date) And Month(cel.Value) = Month(Date) And Year(cel.Value) = Year(Date) And cel.Offset(0, 1).Value = "Momentum" Then
         'définit la cellle de destination
         Set dest = IIf(Sheets("Port_Bellecour").Range("AB5") = "", Sheets("Port_Bellecour").Range("AB5"), Sheets("Port_Bellecour").Cells(Application.Rows.Count, 28).End(xlUp).Offset(1, 0))
         dest.Value = cel.Value 'récupère la date
         dest.Offset(0, 1).Value = cel.Offset(0, 4).Value 'récupère le code isin
         dest.Offset(0, 2).Value = cel.Offset(0, 3).Value 'reçupère le nom de la valeur
         dest.Offset(0, 3).Value = cel.Offset(0, 12).Value 'récupère la devise
         dest.Offset(0, 4).Value = cel.Offset(0, 11).Value 'récupère la quantité
         dest.Offset(0, 5).Value = cel.Offset(0, 6).Value 'récupère le sens
         dest.Offset(0, 6).Value = cel.Offset(0, 15).Value 'récupère le cours
     End If 'fin de la condition
 Next cel 'prochaine celllule de la boucle
 
End Sub


Normalement si la deuxieme conditions est remplis la ligne devrait s'afficher en AB6?

Bonne fin de journée:)
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : incerer une condition VBA

Bonjour Garrec, bonjour le forum,

Tu vois, quand je te disais que j'étais un imbécile... Hein !

Bon ton code est correct mais vérifie que les cellules soient bien vides entre AB6 et AB182. Il se pourrait qu'il n'y ait juste qu'un espace mais ça suffit au code pour considérer la cellule comme non vide. Si tu n'as rien en dessous l'idéal et de sélectionner des lignes 5 à la dernìere et du bouton droit faire Supprimer puis de relancer le code..
 

garrec

XLDnaute Occasionnel
Re : incerer une condition VBA

Bonjour Robert

Ouai c'est bisarre il devait avoir un espace ou qq chose comme ça! Regarde j'ai reussi a faire un bout de code qui reprend tout les mouvements de la semaine au lieux de seulement aujourd'hui

If Day(cel.Value) = Day(Date) And Month(cel.Value) = Month(Date) And Year(cel.Value) = Year(Date) And cel.Offset(0, 1).Value = "Momentum" Or Day(cel.Value) = Day(Date - 1) And Month(cel.Value) = Month(Date - 1) And Year(cel.Value) = Year(Date - 1) And cel.Offset(0, 1).Value = "Momentum" Or Day(cel.Value) = Day(Date - 2) And Month(cel.Value) = Month(Date - 2) And Year(cel.Value) = Year(Date - 2) And cel.Offset(0, 1).Value = "Momentum" Or Day(cel.Value) = Day(Date - 3) And Month(cel.Value) = Month(Date - 3) And Year(cel.Value) = Year(Date - 3) And cel.Offset(0, 1).Value = "Momentum" Or Day(cel.Value) = Day(Date - 4) And Month(cel.Value) = Month(Date - 4) And Year(cel.Value) = Year(Date - 4) And cel.Offset(0, 1).Value = "Momentum" Or Day(cel.Value) = Day(Date - 5) And Month(cel.Value) = Month(Date - 5) And Year(cel.Value) = Year(Date - 5) And cel.Offset(0, 1).Value = "Momentum" Or Day(cel.Value) = Day(Date - 6) And Month(cel.Value) = Month(Date - 6) And Year(cel.Value) = Year(Date - 6) And cel.Offset(0, 1).Value = "Momentum" Or Day(cel.Value) = Day(Date - 7) And Month(cel.Value) = Month(Date - 7) And Year(cel.Value) = Year(Date - 7) And cel.Offset(0, 1).Value = "Momentum"Then


Mais il doit y avoir plus court ;)
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : incerer une condition VBA

Bonjour Garrec, bonjour le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim ad As Range 'déclare la variable ad (Anciennes Données)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
Dim cl As Workbook
Dim da As Date

Set cl = Workbooks("KARA_VIEW_GP.xls")
Set ad = Sheets("Port_Bellecour").Range("AB5").CurrentRegion 'définit la plage des anciennes données
With cl.Sheets("Daily Equity")  'prend en compte l'onglet "Daily Equity"
    'dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne A
    Set pl = .Range("A2:A15000") 'définit la plage pl
End With 'fin de la prise en compte de l'onglet "Daily Equity"
For Each cel In pl 'boucle sur toutes les cellule cel de la plage pl
    'condition : si la date correspond et si en B il y a "Momentum"
    da = Format(Day(cel.Value), "00") & "/" & Format(Month(cel.Value), "00") & "/" & Format(Year(cel.Value), "0000")
    If da <= Date And da > Date - 7 And cel.Offset(0, 1).Value = "Momentum" Then
        'définit la cellle de destination
        Set dest = IIf(Sheets("Port_Bellecour").Range("AB5") = "", Sheets("Port_Bellecour").Range("AB5"), Sheets("Port_Bellecour").Cells(Application.Rows.Count, 28).End(xlUp).Offset(1, 0))
        dest.Value = cel.Value 'récupère la date
        dest.Offset(0, 1).Value = cel.Offset(0, 4).Value 'récupère le code isin
        dest.Offset(0, 2).Value = cel.Offset(0, 3).Value 'reçupère le nom de la valeur
        dest.Offset(0, 3).Value = cel.Offset(0, 12).Value 'récupère la devise
        dest.Offset(0, 4).Value = cel.Offset(0, 11).Value 'récupère la quantité
        dest.Offset(0, 5).Value = cel.Offset(0, 6).Value 'récupère le sens
        dest.Offset(0, 6).Value = cel.Offset(0, 15).Value 'récupère le cours
    End If 'fin de la condition
Next cel 'prochaine celllule de la boucle
End Sub
 

Discussions similaires

Réponses
2
Affichages
129

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof