Creer une formule ou macro pour recherche de donnés automatique
Bonjour à tous,
Voilà j'ai encore besoin de votre aide.
Je voudrais faire une recherche auto dans l'ensemble du fichier.
J'ai besoin que sur la feuille "PLANCHE" les donnés des autres feuilles se mettent à jour automatiquement pour toute la semaine dès qu'on inscrit une date.
J'ai besoin que les données de B2 se placent a côté des données "LTA "de la colonne B se mettent dans la feuille "PLANCHE" dans les case correspondantes au jour, seulement si une date est inscrit dans la colonne C
données d'une des feuilles
d'une autre feuille
Dans ce tableau
Et faire ca pour toute les feuilles du fichiers. même celles que nous créerons plus tard.
en gros prendre toute les données des différentes feuilles et les copier dans "la planche" à partir du moment ou la date est la même.
j'espère avoir été suffisament clair.
Je vous joint mon fichier de départ.
un grand merci à tous pour votre aide
Bonsoir OnlyOneKris, bonsoir le forum,
Tout d'abord j'ai noté que le tableau dans certains onglets ne commençaient pas à la ligne 1 et je l'ai pris en compte dans le code en supprimant la ligne 1 si elle était vide. Ensuite, des onglets différents ont le même pays de destination (par exemple ENV AF et ENV 7C, BEG ASL et BEG JU). Je ne comprenais pas pourquoi je n'obtenais pas les même résultats que toi pour le 23/12/2019 et bien c'est à cause de ça. Tu n'as visiblement pas passé tous les onglets en revue...
Le code a placer dans le composant VBA : Feuil1(PLANCHE)
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet "PLANCHE"
Dim DR As Date 'déclare la variable DR (Date de Référence)
Dim D(6) As Date 'déclare le tableau de 7 variables D (Dates)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des valeurs)
Dim PD As String 'déclare la variable PD (Pays de Destination)
Dim DL As Date 'déclare la variable DL (Date de la Ligne)
Dim JS As Byte 'déclare la variable JS (Jour Semaine)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
If Target.Address <> "$A$1" Then Exit Sub 'si le changement a lieu ailleurs qu'en A1, sort de la procédure
Range("A1").CurrentRegion.Offset(3, 0).ClearContents 'efface les anciennes données
DR = DateSerial(Year(Range("A1").Value), Month(Range("A1").Value), Day(Range("A1").Value)) 'définit la date de référence DR
For I = 0 To 6 'boucle sur 7 jours
D(I) = DR + I 'définit la date D(I)
Next I 'prochain jour de la boucle
For Each O In Worksheets 'boucle 1 : sur tous les onglets O du classeur
If Not O.Name = "PLANCHE" Then 'condition 1 : si le nom de l'onglet n'est pas "PLANCHE"
'si la ligne 1 est vide, supprime la ligne 1
If Application.WorksheetFunction.CountBlank(O.Rows(1)) = Application.Columns.Count Then O.Rows(1).Delete
PD = IIf(UCase(O.Range("B2").Value) = "STOCK", "", O.Range("B2").Value) 'définit le pays de destination PD
If PD <> "" Then 'condition 2 : si PD n'est pas vide
TV = O.Range("A1").CurrentRegion 'définit la tableau des valeurs TV
For I = 5 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeurs TV (en partant de la 5ème)
DL = DateSerial(Year(TV(I, 3)), Month(TV(I, 3)), Day(TV(I, 3))) 'définit la date de la ligne DL
For JS = 0 To 6 'boucle 3 : sur les 7 jours de la semaine
If DL = D(JS) Then 'condition 3 : si la date de la ligne DL est égale la la date D(JS)
'définit la cellule de destination DEST en fonction du jour de la semaine JS
Set DEST = Cells(Application.Rows.Count, 2 * JS + 1).End(xlUp).Offset(1, 0)
'renvoie dans DEST le pays de destination PD si le LTA n'est pas vide ou égal à 0
DEST.Value = IIf(TV(I, 2) = "" Or TV(I, 2) = 0, "", PD)
'renvoie dans DEST décalée d'un colonne à droite le LTA s'il n'est pas vide ou égal à 0
DEST.Offset(0, 1).Value = IIf(TV(I, 2) = "" Or TV(I, 2) = 0, "", TV(I, 2))
Exit For 'sort de la boucle 3
End If 'fin de la condition 3
Next JS 'prochain jour de la semaine de la boucle 3
Next I 'prochaine ligne de la boucle 2
End If 'fin de la condition 2
End If 'fin de la condition 1
Next O 'prochain onglet de la boucle 1
End Sub
Le fichier :
Salut Thau Thème,
Un grand merci ça marche super.
Oui selon les jours de la semaine certaines destinations changent de compagnie, c'est pour ca qu'il y a plusieurs feuilles avec la mêmes destinations. Mais il n'y aura jamais les mêmes dates sur les deux.
Je suis désolé j'ai oublié une colonne très importante la D.
Il faut que les commentaires de la colonne D des feuilles aillent dans la colonne C de la Planche a coté des LTA. J'ai rajouté une colonne "com" sur la planche, ducoup ca décale tout.
Ca te dérange pas de la modifier de nouveau ?
en tout cas merci bcp
Bonne journée
Tu es un tueur !!!
un grand MERCI tu as assuré
et bon dimanche à toi