Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
"BD tournée" : sur la ligne 1 on peut voir qu'il y a des numéro de tournée. Pour chaque tournée il y a 3 sous-collonnes chauffeur / camion / durée tournée.
"Saisie" : en B1 on peut voir une date et à la collonne I on peut voir les numéro de tournée avec à coté les mêmes collonnes chauffeur / camion / durée de tournée
Mon souhait serrait qu'une macro cherche les valeurs à rentrer dans les cellules H2:H3, J2:J3, K2:K3 de la feuille de "Saisie" selon deux critères:
Selon la date B1 ("Saisie"), la macro irrait chercher dans la collone A ("BD tournée") la ligne correpondante.
Selon le numéro de tournée I2:I3 ("Saisie") , la macro irrait chercher la collonne correspondante de la ligne 1 ("BD tournée"). Et elle placerait les valeurs des collones Chauffeur/ Camion/ durée tournée dans les cellules appropriée de la feuille de saisie (H2:H2, J2:J3, K2:K3,)
Voilà, je vous remercie d'avance pour vos lumières 🙂
Désolés, je n'ai pas pu répondre plus tôt.
J'ai donc bien examiné le code car les formules ne sont pas possible, car enfete, la feuille se saisie permet aussi (dans mon cas réel) de saisir les info et de les enregistrer dans la base de donnée.
Et ce que j'aimerai grâce à cette nouvelle macro, c'est que une fois Saisie, je puisse remonter en arrière afin de voir les anciennes saisies.
voilà pour la parenthèse 🙂
Je te remercie pour ton code ! il marche bien, mise à part un truc,
enfete là c'est qu'un exemple, mais dans mon cas réel, il y a une 50 aine de lignes (tournée) dans la feuille saisie, et la base de donnée est immense (>220 colonnes et environ 700 lignes)
Autrement dit, il m'est impossible (je pense) de programmer la partie rouge du code pour 50 lignes:
Code:
Sub maj()
Dim data1 As String
Dim cellule As Range
Dim dl1 As Long ' dernière ligne
Application.ScreenUpdating = False
With Sheets("saisie")
dl1 = Sheets("BD tournée").Range("a65536").End(xlUp).Row
For Each cellule In Sheets("BD tournée").Range("a3:a" & dl1)
data1 = .Range("b1").Value
If .Range("b1").Value = cellule.Value Then
[COLOR="Red"] .Range("H2").Value = cellule.Offset(0, 1).Value
.Range("H3").Value = cellule.Offset(0, 4).Value
.Range("j2").Value = cellule.Offset(0, 2).Value
.Range("j3").Value = cellule.Offset(0, 5).Value
.Range("k2").Value = cellule.Offset(0, 3).Value
.Range("k3").Value = cellule.Offset(0, 6).Value[/COLOR]
Exit For
End If
Next cellule
End With
Application.ScreenUpdating = True
End Sub
J'aimerai donc si possible que cette partie soit plus autonome (qu'il n'y est pas besoin de programmer les 50 lignes, mais une plage par exemple)
donc voilà , si quelqu'un a une idée n'hésitez pas 😀
Merci pour ta réponse, le code marche super bien, mise à part un petit détail qui me tracasse un peu, voilà
Si la macro ne trouve pas de valeur lors de sa recherche dans la "durée de tourneé" dans "BD tournée" elle affiche automatiquement 00:00.Or j'aimerai qu'elle affiche rien (case vide)
Super, tout est parfait le code marche comme je le souhaitais.
Je te remercie pour ton aide trés précieuse.
Il me reste la deuxième partie de la page de saisie à automatiser de la même façon afin de retracer la base de donnée.
Je pense que j'aurai pu être capable d'adapter/reproduire le code que tu m'as donnée pour ce cas si ca n'avait pas été des couleurs de fond de cellules dont il était question pour cette deuxième partie.
Au cas ou celà t'interesse j'énonce la problématique quelque peu différente (sinon je crérai un nouveau fils plustard)
Le problème c'est que là, ce ne sont pas des valeurs à rechercher, mais des couleurs de fond.
Le processus :
Par rapport à la date B1, chercher la date dans la collonne A de la feuille BD chauffeur
Puis, chercher les cellules sur cette ligne dont le fond est vert, rouge ou noir
Inscrire sur la plage A8:A25 de la feuille "Saisie" le nom des chauffeurs étant concernés par ces couleurs
Inscrire "Vrai" à coté du nom du chauffeur dans la bonne collonne selon la couleur qui le concerne:
-collone B pour la couleur Verte
-collone C pour la couleur Rouge
-collone D pour la couleur Noir
je joint l'exemple de ce cas.(à l'interieur il y a une macro permettant l'inverse de ce que je cherche, c'est a dire d'enregistrer dans la BD les couleurs en fonction du nom du chauffeur et de la position du "Vrai" et la date B1 de la feuille de saisie)
Je vous remercie pour vos aides précieuses qui me font apprendre énormement de chose tous les jours.
En reprenant la structure du fichier et en modifiant les écritures, ci joint le fichier avec les procédures pour indiquer le motif d'absence en fonction de la couleur dans la base de données.
La macro marche comme il faut sur l'exemple, cependant, sur mon cas réel, elle met des "faux" un peu partout 😕
A savoir que la plage des "Vrai" et des noms de chauffeur a positionner est la meme sur l'exemple que sur mon cas. Donc je pense que c'est un prob d'adaptation de ma part.Peut etre que c'est un prob de compatibilité entre ces 2 macros vu que leur composition est la même. Pourtant j'ai essayé en renommant les différentes fonction du code.
Je dois déconnecté, je regarderai de plus prét ce soir.
Je te remercie de tout ce que tu as fait pour moi JP14 !
J'ai enfin pu retravaillé sur mon cas excel,
et j'ai trouvé un disfonctionnement de la macro 🙁
Enfete, la macro utilise les noms inscrits en A8:A25 pour sa recherche ainsi que la date, or, je souhaite que ce soit elle qui inscrive ces noms en fonction de la date B1.
Par rapport à la date B1, chercher la date dans la collonne A de la feuille BD chauffeur
Puis, chercher les cellules sur cette ligne dont le fond est vert, rouge ou noir
Inscrire sur la plage A8:A25 de la feuille "Saisie" le nom des chauffeurs étant concernés par ces couleurs
Inscrire "Vrai" à coté du nom du chauffeur dans la bonne collonne selon la couleur qui le concerne:
-collone B pour la couleur Verte
-collone C pour la couleur Rouge
-collone D pour la couleur Noir
ca marche trés bien, mise à part que lorsqu'il n'y a pas de valeurs rentré pour une date, ca remonte jusqu'à la ligne A7, et ca dépasse les limites du tableau, et je n'arrive pas à le fixer.
Celà à juste pour conséquence d'effacer les titres d'absence, mais le problème c'est que ca peut vite faussé toute la feuille si jamais il n'y a rien en A7.
J'ai réussi à délimiter la zone d'effet vers le bas, A25, aucun problème, par contre vers le haut je ne sais pas comment faire.
donc si tu as une idée (j'aimerai juste comprendre )
Concernant le fichier "test5"
Code à rajouter pour vérifier si la date n'est pas à 0 dans la procédure "Sub travdemande()"
Code:
With Sheets(nomfeuille1)
dl1 = .Range(col1 & "65536").End(xlUp).Row
' recherche de la ligne avec la date
[COLOR="red"]If .Range("B1").Value = 0 Or .Range("B1").Value = "" Then
Exit Sub
End If[/COLOR]
Normalement ce code évite
If dl1 > 7 Then
.Range("a8:a" & dl1).ClearContents
End If
d'effacer la zone si dl1 est inférieur à 7
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD