Copie de cellule avec plusieurs conditions

nayz

XLDnaute Nouveau
Bonjour,

je sollicite beaucoup votre aide ces jours-ci et merci beaucoup à tous ceux qui me répondent, bebere, bruno ;).
Alors voilà mon problème, dans le fichier joint j'ai deux tableaux, un sur chaque feuille avec la liste des élèves, les notes les mentions et la date.
Je voudrais, dans la feuill2, afficher la note de l'élève en fonction de la date et du prénom de l'élève.
Sur la feuille2, le prénom de l'élève apparait dans la cellule B5 (il apparaitra toujours là).
Donc, je voudrais trouver le prénom "antoine" dans la colonne A de la feuille 1, et afficher sa note (qui se trouve en feuil1 colonne B) sur la ligne qui correspond à la date en feuille 2.
Vous voyez ce que je veux dire??
 

Pièces jointes

  • TestEleves.xls
    34.5 KB · Affichages: 70

kjin

XLDnaute Barbatruc
Re : Copie de cellule avec plusieurs conditions

Bonsoir,
Vois pas trop la date en colonne B, mais bon

Edit : Désolé, une petite coquille dans la formule provoque un décalage de 1 ligne
remplace 1 par 2

Code:
=SI(ESTNA(INDEX(Feuil1!$B$[COLOR="Blue"][B][SIZE="4"]2[/SIZE][/B][/COLOR]:$H$15;EQUIV(B$5;Feuil1!$A$2:$A$15;0);EQUIV($A6;Feuil1!$B$1:$H$1;0)));"";INDEX(Feuil1!$B$[COLOR="Blue"][B][SIZE="4"]2[/SIZE][/B][/COLOR]:$H$15;EQUIV(B$5;Feuil1!$A$2:$A$15;0);EQUIV($A6;Feuil1!$B$1:$H$1;0)))

A+
kjin
 

Pièces jointes

  • nayz.zip
    11.4 KB · Affichages: 37
Dernière édition:

nayz

XLDnaute Nouveau
Re : Copie de cellule avec plusieurs conditions

Merci bcp les amis. Je pensais plus à un code VBA, mais je prends.
Le truc c'est que les notes et la date de la feuil1 seront actualisés sur les mêmes cellules. Mais merci quand même
 

kjin

XLDnaute Barbatruc
Re : Copie de cellule avec plusieurs conditions

Bonjour,
C'est surtout que je ne pige pas le fonctionnement de ton classeur !
Y a t'il une feuille par mois ou non ?
Code:
Sub ExportNote()
Dim plage As Range, cel As Range, Dat As Date, ws As Worksheet, dt As Range
Set plage = Range("A4:A" & Range("A65000").End(xlUp).Row)
Dat = Range("B1")
For Each cel In plage
    For Each ws In ActiveWorkbook.Sheets
        If ws.Name = cel Then
            Set dt = ws.Range("A6:A" & ws.Range("A65000").End(xlUp).Row).Find(Dat)
            If Not dt Is Nothing Then
                dt.Offset(0, 1) = cel.Offset(0, 1)
                Exit For
            End If
        End If
    Next
Next

End Sub
A+
kjin
 

Pièces jointes

  • nayz_2.zip
    15.1 KB · Affichages: 23

nayz

XLDnaute Nouveau
Re : Copie de cellule avec plusieurs conditions

Oui il n'y a qu'un feuille par mois, en fait tu auras compris que c'est un cas d'exemple. Ce que je fais exactement c'est pour mon stage et c'est bien différent. En fait ce que j'ai appelé NOTES, ce sont des taux que je télécharge quotidiennement d'un site.
Ensuite ces taux sont exportées vers une deuxième feuille en fonction de la date et du nom de la cellule (ici le prénom de l'élève).
J'espère que je me fais comprendre, ce n'est pas évident pour moi. Et je suis désolé si je ne donne pas exactement les bonnes infos mais ça serait encore plus farfelu.
Je vais essayer d'adapter ton code et je te reviens
 

nayz

XLDnaute Nouveau
Re : Copie de cellule avec plusieurs conditions

Je vous mets ici les véritables données dont je dispose.
J'ai copié les données d'un autre tableau, c'est pourquoi vous ne trouverez pas les codes et macros avec lesquelles je travaille.
Tout ça parceque le fichier source avec lequel je travaille appartient à la société avec laquelle je travaille et je ne peux pas vous donner ça pour cause de confidentialité n'est-ce pas?;)
Donc, en premier lieu je charge les taux sur la feuil1 à partir d'un site.
Ensuite, je charge les données que je veux sur la deuxième feuille à partir d'un autre fichier excel.
Ce que je voudrais, c'est un code qui me permet de retrouver la devise qu'il y a en cellule C9, F9, I9...de la feuil2 dans la colonne D de la feuil1. Puis, en fonction de la date, aller mettre le taux correspondant (dans feuil1 colonne E) dans la cellule correspondant à la date et la devise dans feuil2.
Vous voyez un peu mieux maintenant?
Merci bcp pour votre patience
 

Pièces jointes

  • Test.xls
    21.5 KB · Affichages: 91
  • Test.xls
    21.5 KB · Affichages: 92
  • Test.xls
    21.5 KB · Affichages: 88

kjin

XLDnaute Barbatruc
Re : Copie de cellule avec plusieurs conditions

Re,
...Ce que je voudrais, c'est un code qui me permet de retrouver la devise qu'il y a en cellule C9, F9, I9...de la feuil2 dans la colonne D de la feuil1....
En C9, F9, I9 de la feuille 2, il y a un taux et non une devise !
Si c'est un trompage de ligne, je dirais que les devises sont en C7, F7...
Puis, en fonction de la date, aller mettre le taux correspondant (dans feuil1 colonne E) dans la cellule correspondant à la date et la devise dans feuil2.
Vous voyez un peu mieux maintenant?
Merci bcp pour votre patience
Comme il y a plusieurs fois la même devises (exemple USD en F7 et I7), avec des taux différents, quoi fait-on ? (je ne vois rien en feuille 1 qui puisse nous le dire)
A+
kjin
 

nayz

XLDnaute Nouveau
Re : Copie de cellule avec plusieurs conditions

Oui excuse, ce sont les cellules C7...trompage de ma part, dsl.
En réalité, il n'y aura pas deux devises pareilles sur le tableau.
On peut imaginer qu'il y aura cinq devises différentes : GBP, USD, BGN, HUF et CZK par exemple.
On les retrouve sur la colonne D de la feuil1.
J'ai trouvé ce code, mais il faut l'adapter. Il me semble qu'il peut marcher :

Dim plage As Range, cel As Range, Dat As Date, ws As Worksheet, dt As Range
Set plage = Range("D3:A" & Range("D65000").End(xlUp).Row)
Dat = Range("A1")
For Each cel In plage
For Each ws In ActiveWorkbook.Sheets??
If ws.Name = cel Then
Set dt = ws.Range("B9:B" & ws.Range("D65000").End(xlUp).Row).Find(Dat)
If Not dt Is Nothing Then
dt.Offset(0, 1) = cel.Offset(0, 1)
Exit For
End If
End If
Next
Next

End Sub

Mais ça ne marche pas encore
 

kjin

XLDnaute Barbatruc
Re : Copie de cellule avec plusieurs conditions

Bonsoir,
Utilisation d'INDEX/EQUIV en vba
A adapter
Code:
Sub Aboulespepetes()
With Sheets("feuil2")
    Col = .Cells.SpecialCells(xlCellTypeLastCell).Column
    Lign = .Cells.SpecialCells(xlCellTypeLastCell).Row
    Set PlgDev = .Range(.Cells(7, 3), .Cells(7, Col))
    Set PlgDat = .Range("B9:B" & Lign)
    Set PlgTaux = .Range(.Cells(9, 3), .Cells(Lign, Col))
End With
With Sheets("Feuil1")
    .Range("A1") = DateValue(.Range("A1"))
    Set Plg = .Range("D3:D" & .Range("D65000").End(xlUp).Row)
    Plg.Offset(, 1).ClearContents
    For Each cel In Plg
        x = Application.Index(PlgTaux, Application.Match(.Range("A1"), PlgDat, 0), _
        Application.Match(cel, PlgDev, 0))
        If Not IsError(x) Then cel.Offset(0, 1) = x
    Next
End With

End Sub
A+
kjin
 

Pièces jointes

  • nays.zip
    12.7 KB · Affichages: 29

nayz

XLDnaute Nouveau
Re : Copie de cellule avec plusieurs conditions

Je crois qu'on ne sait pas bien compris Kjin,

voilà sur ce fichier j'ai modifié ce que t'as fait.
J'y ai mis le code avec lequel je charge mes données du site.
Ensuite c'est en focntion de ces données que je remplis mon tablleau en feuil2 pas l'inverse.
Les taux que je veux copier se trouvent en colonne E de la feuil1.
Je veux les mettre en colonne D de feuil2 en focntion de la date et de l'intitulé du "Code" (colonne D de feuil1). Le code en feuil2 C7 F7...doit matcher celui de la feuil1 D3:D.
Je crois qu'on se comprendra mieux maintenant.
C'est ma faute en fait, je me suis mal exprimé et avec mon trompage je t'ai embrouillé. Dsl
 

Pièces jointes

  • nays.xls
    37 KB · Affichages: 68

kjin

XLDnaute Barbatruc
Re : Copie de cellule avec plusieurs conditions

Bonsoir,
Ben ça doit aller dans ce sens là alors
Code:
Sub Transfert()
Dim Dat As Date, PlgDev As Range, PlgTaux As Range
Dim dCol As Integer, c As Range, i As Integer, x
With Sheets("feuil1")
    Dat = .Range("A1")
    Set PlgDev = .Range("D3:D" & .Range("D65000").End(xlUp).Row)
    Set PlgTaux = .Range("E3:E" & .Range("E65000").End(xlUp).Row)
End With
With Sheets("Feuil2")
    dCol = .Range("IV7").End(xlToLeft).Column
    Set c = .Range("B9:B" & .Range("B65000").End(xlUp).Row).Find(Dat)
        If Not c Is Nothing Then
            For i = 3 To dCol Step 3
            x = Application.Index(PlgTaux, Application.Match(.Cells(7, i).Value, PlgDev, 0))
            If Not IsError(x) Then .Cells(c.Row, i + 1) = x
            Next
        End If
End With

End Sub
A+
kjin
 

Pièces jointes

  • nays_(- -).zip
    15.1 KB · Affichages: 31

nayz

XLDnaute Nouveau
Re : Copie de cellule avec plusieurs conditions

Merci beaucoup Kjin, ça marche!!
J'ai tripatouillé un peu le code parcequ'il m'affichait des codes d'erreur quand je le faisais tourner, mais c'est génial, ça roule bien.
Merci bcp
 

Discussions similaires

Statistiques des forums

Discussions
312 500
Messages
2 089 013
Membres
104 004
dernier inscrit
mista