Récupération contenu sous conditions

djfx60

XLDnaute Nouveau
Bonjour,

Je voudrais renvoyer les données contenues dans la colonne N de la feuille data! de l'exemple joint vers la feuille Rémi! si les conditions de date en B2 et de créneau en A4 de la feuille Rémi! sont réunies dans la feuille data! et cela automatiquement ou via les boutons de feuille TRV!
J'ai fais quelques centaines de recherches sur le forum et à travers le net mais je n'y arrive pas.
Une aide serait la bienvenue.

Cdt.
 

Pièces jointes

  • RDV Travaux.xls
    203 KB · Affichages: 49

Yaloo

XLDnaute Barbatruc
Re : Récupération contenu sous conditions

Bonsoir djfx et bienvenu sur XLD,

Avec cette macro, à déclencher par un bouton (ou tu veux) ou par une macro évènementielle.

VB:
Sub Transfert()
Dim i&, j&, k&, l&
Dim Ws As Worksheet
With Sheets("Data")
  For i = 2 To [M65000].End(xlUp).Row
    For Each Ws In Worksheets
      If .Cells(i, 12) = Ws.Name And .Cells(i, 11) = Ws.[B2] Then
        j = Application.Match(.Cells(i, 13), Ws.Columns(1), 0)
        Ws.Cells(j, 2) = .Cells(i, 14).Value
      End If
    Next
  Next
End With
End Sub

A te relire

Martial
 

djfx60

XLDnaute Nouveau
Re : Récupération contenu sous conditions

Bonjour Martial,

Merci pour ta réponse rapide et ton accueil.
Ton code fonctionne, mais à partir du 3éme bouton il ne se passe rien quelque soit le critère.
De plus, si je recopie les boutons dans leurs feuilles respectives j'ai une erreur d'arrêt!
Qu'aurais-je zappé?
 

Yaloo

XLDnaute Barbatruc
Re : Récupération contenu sous conditions

Bonsoir djfx, bonsoir à tous,

Je vais te décrire le code, normalement il n'y a pas besoin plusieurs boutons, un seul suffit.

Voici le détail

VB:
Option Explicit

Sub Transfert()
Dim i&, j&
Dim Ws As Worksheet
'Avec la feuille Data
With Sheets("Data")
  'Pour toutes les lignes de 2 jusqu'à la dernière
   For i = 2 To .[M65000].End(xlUp).Row
     'Pour toutes les feuilles
     For Each Ws In Worksheets
       'Si la feuille correspond au nom de la cellule en ligne i colonne L (nom du Plombier)
       'Et que la date de la ligne i colonne K est égale à la cellule B2 de la feuille Ws
       If .Cells(i, 12) = Ws.Name And .Cells(i, 11) = Ws.[B2] Then
         'Alors on recherche la plage horaire de la ligne i colonne M dans la colonne 1 de la feuille Ws
         j = Application.Match(.Cells(i, 13), Ws.Columns(1), 0)
         'On rentre les données de Data ligne i colonne N dans la cellule j (trouvée ci-dessus) colonne 1 de la feuille Ws
         Ws.Cells(j, 2) = .Cells(i, 14).Value
       End If
     'La feuille suivante
     Next
   'La ligne suivante de la feuille Data
   Next
End With
End Sub

J'ai modifié juste un . ce qui te premet de mettre la macro n'importe où.

A+

Martial
 

Yaloo

XLDnaute Barbatruc
Re : Récupération contenu sous conditions

Re,

Il y a 3 conditions :
- Il faut que le nom soit exactement identique dans tes cellules de Data et dans le nom des onglets.
- Il faut que les dates correspondent entre l'onglet Data et la cellule B2 de l'onglet du plombier.
- Et enfin il faut que la plage horaire soit écrite exactement de la même façon que dans les autres onglets.

Si une seule de ces conditions n'est pas remplies, la cellule n'est pas copiée.

Pour être sûr que tes cellules est le même nom que tes onglets, de même pour les plages horaires, tu peux passer par des validations de données.

A+

Martial
 

Discussions similaires

Réponses
16
Affichages
1 K

Statistiques des forums

Discussions
312 389
Messages
2 087 933
Membres
103 678
dernier inscrit
bibitm