Bonsoir Hello, Hello Christian, Hello Bonsoir !
Bon j'ai été prévenu, mais parfois 'j'entends' aussi quand on parle de moi
Bon j'ai regardé ton fichier Christian, pas vraiment de difficulté, mais là où le bas blesse c'est que ta base n'est pas la vraie, enfin je m'entends, il manque des champs... Et par conséquent si je te fais un algo, il ne pourra fonctionner que sur cette structure de base.
Exemple :
RAISIN MUSCAT Hambourg France
Dans la feuille Base il n'y en a qu'un qui correspond au fournisseur :
POMONA TERRE AZUR (fruits)
Donc je pourrai très bien faire un algo pour retourner le premier 'RAISIN MUSCAT Hambourg France' trouvé dans la base....
Mais si tu as un autre fournisseur dans cette base, par exemple :
AUX BONS FRUITS CHEZ MARCEL
(
qui fournit aussi du 'RAISIN MUSCAT Hambourg France)
Et bien si c'est lui qui est en premier dans la base, tu auras donc les commentaires de ce fournisseur...
Tel que je vois la Feuille Commande, il y a quatre champs :
[li]1) Libellé produits[/li]
[li]2) Commentaires[/li]
[li]3) Provenance/Catégorie[/li]
[li]4) Non Indiqué (30 15 30...)[/li]
Or je ne retrouve pas le champs 'Provenance/Catégorie' dans la feuille base mais j'imagine aussi que celui-ci a son importance...
De plus la base commence en colonne 'D', donc j'imagine trois colonnes manquantes...
Et puis le 'Must' c'est de trouver les Jours !!! lol Comment on fait ? tu ne précises rien pour 'TRAME MENUS N°1' je les 'pêche' comment moi depuis la feuille 'Commande' lol ??
Enfin voilà déjà un truc qui marche sur ton fichier, mais tu peux déjà t'imaginer le boulot qu'il y a derrière un truc aussi compliqué, et si en plus il y a des Formules, je crains que ce devienne vite une usine à gaz ingérable ...
Option Explicit
Sub ReadCommentsFromBaseLineaire()
Dim WSBase As Worksheet, WSCible As Worksheet
Dim PlageBase As Range, PlageCible As Range
Dim CellBase As Range, CellCible As Range
Dim PlageBaseJour As Range, CellBaseJour As Range, CellCibleJour As Range
Dim CellComment As Range
Set WSBase = ThisWorkbook.Worksheets('Base')
Set WSCible = ThisWorkbook.Worksheets('Commande')
Set PlageBase = WSBase.Range('E8:E' & WSBase.Range('E1000').End(xlUp).Row)
Set PlageCible = WSCible.Range('F19:F' & WSCible.Range('F100').End(xlUp).Row)
Set PlageBaseJour = WSBase.Range('F7:J7') 'On ne peux pas faire mieux pour l'instant !
Set CellCibleJour = WSCible.Range('G16')
For Each CellCible In PlageCible
For Each CellBase In PlageBase
If CellCible = CellBase Then
For Each CellBaseJour In PlageBaseJour
If CellCibleJour = CellBaseJour Then
Set CellComment = WSBase.Cells(CellBase.Row, CellBaseJour.Column)
If Not CellComment.Comment Is Nothing Then
CellCible.Offset(0, 1) = CellComment.Comment.Text
End If
End If
Next
End If
Next
Next
End Sub
Bonne Soirée
[ol]@+Thierry[/ol]