Besoin d'un Génie sur Excel :-)

  • Initiateur de la discussion Initiateur de la discussion dexter59
  • 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 !

D

dexter59

Guest
Bonjour,

Dans mon fichier j'ai des jours et des heures. Je pense que c'est impossible de créer une règle pour que cela se fasse tout seul mais bon on sait jamais.

Ce qu'il faudrait :

Il y a par exemple :

Lundi 21:00
Lundi 21:00
Lundi 21:00
Mardi 25:00
Mardi 25:00
Etc... même principe quelque soit le jour et l'heure

Il faudrait que quand il y a ce cas de figure et quelque soit le jour que Excel fasse cela automatiquement

Lundi 21:00
Lundi 21:01
Lundi 21:02
Mardi 25:00
Mardi 25:01

C'est impossible d'automatiser cela non ?

Merci d'avance
 

Pièces jointes

Re : Besoin d'un Génie sur Excel 🙂

Bonjour Bourbon,

J'ai besoin d'une Macro qui ajoute une minute à chaque fois si il y a des heures en doublon pour le même jour mais sans ajouter de colonne supplémentaire ou quoi que ce soit. Il faut donc que cela se fasse automatiquement pour la colonne F svp.

Je vous signale que ma macro insère une colonne supplémentaire mais ensuite la supprime.

Par rapport aux macros avec boucles, cette macro s'exécute nettement plus rapidement.

Je me demande si vous avez seulement essayé la macro 🙄

Vous auriez dit cela dès le début, je ne me serais pas occupé de vous.

Adaptez si vous le voulez la macro de ROGER2327 (que je salue au passage), ou celle d'Efgé (que je salue aussi) sur l'autre fil que vous avez ouvert.

A+
 
Dernière édition:
Re : Besoin d'un Génie sur Excel 🙂

Bonjour Bourbon, job75, pierrejean
Je verrais bien ceci :
Code:
[COLOR="DarkSlateGray"][B]
Code supprimé[/B][/COLOR]
ROGER2327
#4269


Mercredi 4 Haha 138 (Sainte Berthe de Courrière, égérie, SQ)
18 Vendémiaire An CCXIX
2010-W40-6T15:44:31Z
 
Dernière édition:
Re : Besoin d'un Génie sur Excel 🙂

Re-bonjour à tous
Moins simple qu'il n'y parait...
Et si on trouve 23 h 59 comme doublon ? Et si les données ne sont pas ordonnées (ce qui est le cas dans l'exemple fourni) ?

Je tente un nouvel essai :
Code:
[COLOR="DarkSlateGray"][B]Sub toto()
Dim i&, j&, k&, tmp#
Dim CelRef
Dim oPlg0 As Range, oPlg1 As Range, sDat#(), oColl As New Collection
  CelRef = Array("D17", "F17")
  Set oPlg0 = Range(Range(CelRef(0)), Cells(Rows.Count, Range(CelRef(0)).Column).End(xlUp))
  If oPlg0.Count > 1 Then
    Set oPlg1 = oPlg0.Offset(Range(CelRef(1)).Row - Range(CelRef(0)).Row, Range(CelRef(1)).Column - Range(CelRef(0)).Column)
    ReDim sDat(1 To oPlg0.Count - 1, 1 To 1)
    On Error Resume Next
    For i = 2 To oPlg0.Count
      sDat(i - 1, 1) = Round(CDbl(oPlg0.Cells(i, 1)) + CDbl(oPlg1.Cells(i, 1)), 6)
      oColl.Add sDat(i - 1, 1), CStr(sDat(i - 1, 1))
    Next i
    On Error GoTo 0

    Do While oColl.Count < UBound(sDat, 1)
      For i = 1 To oColl.Count
        tmp = oColl(i)
        k = 0
        On Error Resume Next
        For j = 1 To UBound(sDat, 1)
          If tmp = sDat(j, 1) Then
            sDat(j, 1) = Round(sDat(j, 1) + k / 1440, 6)
            If k Then oColl.Add sDat(j, 1), CStr(sDat(j, 1))
            k = k + 1
          End If
        Next j
        On Error GoTo 0
      Next i
    Loop

    With Application: .ScreenUpdating = 0: .Calculation = -4135: .EnableEvents = 0: End With
    For i = 1 To UBound(sDat, 1)
      Range(CelRef(0)).Offset(i, 0).Value = Int(sDat(i, 1))
      Range(CelRef(1)).Offset(i, 0).Value = sDat(i, 1) - Int(sDat(i, 1))
    Next i
    With Application: .EnableEvents = 1: .Calculation = -4105: .ScreenUpdating = 1: End With

  End If
End Sub[/B][/COLOR]
ROGER2327
#4270


Mercredi 4 Haha 138 (Sainte Berthe de Courrière, égérie, SQ)
18 Vendémiaire An CCXIX
2010-W40-6T21:59:21Z
 
Re : Besoin d'un Génie sur Excel 🙂

Re

Heureusement que vous etes la, ROGER , pour debusquer les chausses-trapes qui se glissent insidieusement dans les problemes qui nous sont posés !!

La nuit portant conseil ,j'ai pondu ceci qui me parait etre une solution

VB:
Sub test3()
Set dico = CreateObject("Scripting.dictionary")
dico(Range("D18") & " " & Range("F18")) = 1
For n = 19 To Range("D65536").End(xlUp).Row
While dico.exists(Range("D" & n) & " " & Range("F" & n))
If Range("F" & n) + 1 / (24 * 60) = 1 Then
Range("D" & n) = Range("D" & n) + 1
Range("F" & n) = 0
Else
Range("F" & n) = Range("F" & n) + 1 / (24 * 60)
End If
Wend
dico(Range("D" & n) & " " & Range("F" & n)) = 1
Next
End Sub
 
Re : Besoin d'un Génie sur Excel 🙂

Re...
Bonjour pierrejean
La nuit semble vous apportez de bon conseils. Reste à voir si le fait de travailler directement sur la feuille ne risque pas de donner une durée d'exécution un peu longue sur un liste riche en doublons. Je n'ai pas encore testé... (Je le ferai en soirée si j'en ai le loisir...)​
Bonne soirée.​
ROGER2327
#4277


Jeudi 5 Haha 138 (Sainte Belgique, nourrice, SQ)
19 Vendémiaire An CCXIX
2010-W40-7T15:06:30Z
 
- 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

  • Question Question
Réponses
15
Affichages
1 K
Réponses
9
Affichages
1 K
Retour