Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion JJ
  • Date de début Date de début

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 !

J

JJ

Guest
Bonjour,
J'ai un tableau Excel de 10 colonnes et une cinquantaine de lignes avec la colonne F qui sert à l'horodatage (cellule sous la forme:
JJ/MM/AAAA 2espaces HH:MM fin de la cellule tabulée à droite)
Je voudrais supprimer toutes les lignes du tableau dont l'heure est comprise entre 08:00 et 18:00 (peu importe la date) ou inversement conserver les autres horaires de soirée
Comment puis je faire?
Puis je automatiser par une macro?
La difficulté vient que les cellules colonne F contiennent la date ET l'heure
a+
Merci
 
JJ, le forum.

tu peux contourner la difficulté en créant une nouvelle colonne qui isolerait tes heures avec cette formule =DROITE(F1;5).
ensuite le filtre automatique doit te suffire.

espérant t'avoir aidé

A+
 
bonjour JJ , bonjour Michael

tu peux aussi tester cette macro


Dim i As Integer, x As Integer
Dim Debut As Integer
Dim Cible As Date
i = Range('F65536').End(xlUp).Row

For x = i To 1 Step -1
Debut = InStr(Cells(x, 6), ' ')
Cible = Mid(Cells(x, 6), Debut, Len(Cells(x, 6)) - Debut)

If Cible >= #8:00:00 AM# And Cible <= #6:00:00 PM# Then Rows(x).Delete
Next x



bonne soiree
MichelXld
 
Bnosoir le forum, bonsoir jj

Voici une autre macro que j'ai testé::

Sub Cache()

Dim zv_Nbr As Byte
Dim zv_Deb, zv_Fin As Variant

zv_Deb = 8: zv_Fin = 18

Sheets('Feuil1').Select
For zv_Nbr = 1 To 50
If Val(Mid$(Range('F' & zv_Nbr & '').Value, 12, 4)) < zv_Deb Then
Rows(zv_Nbr & ':' & zv_Nbr).Select
Selection.EntireRow.Hidden = True
ElseIf Val(Mid$(Range('F' & zv_Nbr & '').Value, 12, 4)) = zv_Fin Then
If Val(Mid$(Range('F' & zv_Nbr & '').Value, 15, 2)) >= 1 Then
Rows(zv_Nbr & ':' & zv_Nbr).Select
Selection.EntireRow.Hidden = True
End If
ElseIf Val(Mid$(Range('F' & zv_Nbr & '').Value, 12, 4)) > zv_Fin Then
Rows(zv_Nbr & ':' & zv_Nbr).Select
Selection.EntireRow.Hidden = True
End If
Next zv_Nbr


End Sub

Bonne découverte,

Vincent
 
Bonsoir JJ, sigma+, MichelXLD, Humansoft,

Pour le même pris JJ 😉 , voici une 4ème solution possible :
Cordialement,
 
Bonsoir, j'ai écrit la macro qui fonctionne parfaitement Merci

Question importante:

-Est il possible de rajouter une condition, supprimer aussi toutes les lignes (quelque soit l'horodatage) dont la colonne D contiendrait 'JEAN' ou 'PAULINE' ? (l'horodatage est en colonne F)

fignolage : !!(pas nécessaire)
- Est il possible de copier le résultat de toutes ces lignes supprimées dans la feuille suivante du classeur pour y faire des calculs?
Si cela est possible, la macro peut elle automatiquement faire la somme de la colonne H (prix) sur la nouvelle feuille créée?

Merci beaucoup et Bon WE
JJ
 
Bonjour pour le decalage je repondais à my dear friend et pour la macro à completer qui fonctionne parfaitement à michel car dans ce post on ne sait pas a qui on repond
merci et bon WE
JJ
 
bonjour JJ , Michael , Vincent et Didier

tu peux tester

Option Explicit
Option Compare Text

Sub Test()
Dim i As Integer, x As Integer
Dim Debut As Integer
Dim Cible As Date
i = Feuil1.Range('F65536').End(xlUp).Row

For x = i To 1 Step -1
If Feuil1.Cells(x, 4) = 'JEAN' Or Feuil1.Cells(x, 4) = 'PAULINE' Then

Transfert x
Rows(x).Delete

Else

Debut = InStr(Feuil1.Cells(x, 6), ' ')
Cible = Mid(Feuil1.Cells(x, 6), Debut, Len(Feuil1.Cells(x, 6)) - Debut)
If Cible >= #8:00:00 AM# And Cible <= #6:00:00 PM# Then
Transfert x
Feuil1.Rows(x).Delete
End If

End If
Next x

i = Feuil2.Range('H65536').End(xlUp).Row
Feuil2.Cells(i + 1, 8).Formula = '=SUM(H2:H' & i & ')'
End Sub

Sub Transfert(x As Integer)
Dim i As Integer
Dim j As Byte

i = Feuil2.Range('F65536').End(xlUp).Row + 1

For j = 1 To 8
Feuil2.Cells(i, j) = Feuil1.Cells(x, j)
Next j
End Sub



bonne journée
MichelXld

Message édité par: michelxld, à: 17/09/2005 13:12
 
Bonjour à tous
Réponse à Michel, la macro fonctionne super bien sauf une erreur (Formula Sum.....) j'ai remplacé par FormulaLocal =somme(H... comme un calcul normal et ca marche !
Bon Dimanche et merci pour votre aide à tous
JJ
 
J'ai besoin (encore !!) d'un peu d'aide pour la suite d'un calcul suite à l'installation de la macro de Michel sur la feuille 2 (résultat)

J'ai réussi à y faire des tests colonne D(prénoms) et H (Horodatage) qui mettent automatiquement en caractères gras ( cel.Font.Bold=True) certaines cellules (uniquement dans les colonnes D ou F ) selon mes conditions de test et ca marche!!

Toutefois je voudrais à nouveau y supprimer toutes les lignes dont les cellules de la colonne F (Horodatage) sont en gras MAIS qui n'ont pas AUSSI la cellule de la colonne D en gras.

Comment l'écrire?
MERCI
Bon dimanche a tous
JJ
 
Bonjour,
Je suis arrivé à faire le test en gras par la commande IF.....Offset...Then et ca marche !!! (un coup de chance!)
Une petite question qui m'embête:
La macro générale Test() fonctionne parfaitement et chàîne les macros successives sauf la dernière qui ne s'exécute pas auto et je dois la lancer manuellement alors qu'elle est bien à la suite des 4 premières , Pourquoi?
a+
JJ
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
2 K
A
Réponses
4
Affichages
1 K
Alex6942
A
M
Réponses
14
Affichages
2 K
MClaude
M
D
Réponses
20
Affichages
4 K
Débutant79
D
S
Réponses
12
Affichages
11 K
C
Réponses
4
Affichages
3 K
Réponses
13
Affichages
2 K
M
Réponses
2
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…