Aide programme compliqué Excel

Bonjour,

je demande peut être quelque chose de trop compliqué mais je pense que avec un bon programmeur tout est possible, ou peut être me dirigé vers un autre logiciel.

Tout est expliqué dans la pièce jointe, il faut à partir des deux données annexes sélectionner la bonne ligne et colorier au bonne endroit.

C'est peut être un peu flou mais n'hésitez pas à me demander plus d'information je reste à votre disposition.

Cordialement.

50test.xlsx (16.08 Ko)

Bonjour

Non, cela ne parait pas très compliqué. A la condition que ce soit bien expliqué.

Nous avons 4 lignes de couleur. Reste à savoir pourquoi on choisirait la rouge et pas la bleue.

Reste à savoir aussi à quoi on reconnait que "c'est libre".

A te lire

Cordialement

Merci de ta réponse rapide et pertinente,

Le choix de la ligne est défini selon deux critères :

  • la disponibilité
  • la date la plus proche de celle demandée

la ligne est choisie en fonction de la disponibilité c'est à dire si elle n'est pas colorié elle est libre.

Mais aussi la rouge est choisie plus que la bleu parce que elle disponible plus tot que l'autre.

J'avoue j'ai du mal à m'expliquer.

En espérant avoir répondu à ta requête, et encore merci pour tes réponses

Bonjour à tous,

Pour trouver la colonne de la date

Sub essai()
Dim cL%
        On Error Resume Next
    cL = WorksheetFunction.Match(Range("f4"), Rows(8), 0) 'date en F4
        On Error GoTo 0
    If cL = 0 Then
        MsgBox ("Cette date n'existe pas !")
        Exit Sub
    End If

    Cells(8, cL).Activate
    '--- suite macro ---
End Sub

Pour la suite et le reste, les explications ne sont pas claires

Amicalement

Claude

Bonjour

Claude, de toute façon, la date n'existe pas car on cherche 2011 et le tableau est 2012.

Pour JiiMMy_13

De plus, l'explication concernant le choix de la LIGNE est plus qu'incompréhensible.

A quoi voit on que la rouge est plus vite disponible que la bleue?

En annexe à cela, je rajouterai (Je devrai le mettre dans mon message profil)

Incroyable ce qu'un sujet simple à résoudre devient énervant et incompréhensible quand il est mal exposé

Cordialement

Bonjour Amadéus, forum,

C'est vrai que souvent, on passe + de temps à déchiffrer la question qu'à la résoudre,

parfois, on se demande !!!

Bonne journée

Claude

Bonjour à tous et merci pour vos réponses,

Tout d'abord je tiens à m'excuser pour ma demande un peu flou, je vais essayer d'être plus clair.

Reprenons mon exemple :

-En amont je rentre deux critères c'est à dire : 05/01 et 7jours

Ensuite, on sélectionne la colonne correspondant au 05/01(valeur rentré en amont en F4), on voit que les 4 lignes sont déjà occupées (colorié) à cette date. Et quelles sont libres, je m'explique, à partir de : pour la ligne noire le 15/01, pour la ligne jaune le 12/01, pour la ligne rouge le 14/01 et pour la ligne bleu le 16/01.

Or c'est la que l'autre critère rentre en jeu, une durée de 7jours, cela élimine la ligne jaune parce que on voit que on a que 5jours de libre du 12/01 au 16/01.

Il nous reste les trois autres lignes, on choisit la rouge parce que c'est le 14/01 qu'elle n'est plus coloriée et c'est donc inférieur au 15/01 (noir) et au 16/01 (bleu).

Et pour finir, une fois le choix de la ligne fait, il faut colorié les 7jours (rentrée en T4) dès que c'est libre.

Voila en espérant avoir été un peu plus clair, et surtout avoir une réponse à ce projet assez compliqué.

Encore merci pour votre disponibilité.

Cordialement

Bonjour

Par curiosité, ne sachant pas résoudre avec VBA, j'ai dirigé les neurones sur une macro XL4 (Feuille Macro1 masquée)

Sécurité des Macros sur "Niveau moyen" pour bien réceptionner.

Le principe étant posé, nous verrons si l'expert VBA peut l'appliquer.

A noter qu'un cas n'est (pour l'instant) probablement pas résolu, celui des lignes entrecoupées de plusieurs blancs.

Cordialement

26testv2.zip (13.87 Ko)

Bonjour amadéus et merci pour votre réponse,

J'ai du mal à comprendre ce que vous avez voulu faire... Pourriez vous m'expliquer plus clairement et me dire comment puis je accédé à la macro ?

J'ai essayé votre programme mais malgré le "ajouter" qui correspond à mes attentes, quand je rentre une date et une durée cela ne fonctionne puis il ne sélectionne plus que la ligne bleue.

De plus il me semble que ce programme manque d'un critère que je n'ai pas énoncé, si on rentre une date, par exemple, le 10/03 il faudrait qu'il colorie à partir du 10/03 dans la première ligne, or il colorie à la suite

Il me semble que ce projet est assez compliqué mais merci de votre aide précieuse, pourriez vous me dire si cela reste tout de même réalisable ?

Bien cordialement.

Bonjour

J'ai déjà fait la remarque dans un précédent message de ce que les dates de la ligne 8 étaient des dates de l'année 2012.

Donc, quand on rentre une date en F4, il faut aussi entrer une date correspondant à 2012 sinon, bien sur, cela ne peut fonctionner.

Voila le résultat que j'obtiens en rentrant en F4 la date du 10/03/2012

Cordialement

28testv2.zip (13.88 Ko)

Merci amadéus de ta réponse pertinente et rapide,

J'ai l'impression que cela avance à grand pas, grâce à toi, et je te remerci.

Par contre je ne sais pas comment voir ton programme peux tu m'aiguiller ? Parce que j'aime bien essayer de comprendre les choses et j'aimerai dans la mesure du possible tenter de comprendre le programme qui t'a permis d'en arriver jusque là.

De plus je n'ai pas compris le problème des lignes entrecoupées de plusieurs blancs.

Cordialement.

Bonjour

Une macro XL4 (Excel version 4.0) s'écrit avec des instructions en français similaires aux formules de calculs.

Le Code ne se trouve pas dans un Module mais sur une feuille appelée feuille Macro qui se présente comme une feuille Excel ordinaire.

Dans le fichier, j'ai masqué cette feuille. Pour la visualiser (je suis en Excel 2003) j'utilise la commande du menu "Format" et "Feuille", je sélectionne le nom proposé et je clique sur "Afficher".

Pour voir l'action de chaque ligne de commande, menu "Outil" "Macro", et "Pas à pas détaillé". A partir de là, chaque fois que je presse la touche inter, la ligne d'instruction suivante est exécutée.

Noter que j'ai nommé un certain nombre de plages.

Si tu as besoin de plus d'explication, à ta disposition.

Mais, je serai surpris de l'impossibilité de traiter ce sujet avec VBA.

Cordialement

Merci de tes précisions précieuse,

mais j'ai pu voir ta macros grâce au "pas a pas detaillé" mais impossible d'accéder à la feuille contenant la macros...

Peux tu me mettre en pièce jointe la macros correspondant à ce programme, pour que je puisse me pencher sur le problème aujourd'hui et demain ?

Merci d'avance

Bonjour

Le fichier avec la feuille Macro affichée.

Cordialement

18testv2.zip (13.86 Ko)

Encore merci,

je me penche sur cette macros en essayant de comprendre aujourd'hui et demain et si j'ai un problème de compréhension je reviens vers vous.

Merci beaucoup pour votre aide précieuse

Bonjour

Voilà ce que je voulais dire en parlant de ligne entrecoupée de blanc(s)

Tu as ici l'exemple avec la ligne jaune.

Cette version semble résoudre ce problème. Tu testes pour voir.

Cordialement

15testv4.zip (13.99 Ko)

Bonjour,

J'ai constaté un probléme, je ne sais pas si je parle du même problème que tu as soulevé précedemment (lignes entrecoupées de blanc)

En effet dans le fichier en pièce jointe, quand tu rentres la date 14/01, le programme selectionne la ligne mais devrait colorier à partir du 30/01 pour une durée de 7jour or la il selectionne le 14/01,le 15/01, le 16/01 !!!

Merci d'avance pour ta réponse en espérant avoir été clair.

Bien cordialement.

Bonjour

C'est pour cela que je te disais de tester. Pour savoir si j'avais envisagé tous les cas possibles.

Une modif de la Macro. Tout est question de règlage des compteurs.

J'ai testé pas mal, mais tu dois continuer pour contrôler.

Cordialement

13testv5.zip (10.99 Ko)

Bonjour,

Merci pour ta réponse je vais comparer les deux pour voir comment tu as fait.

Je vais continuer à tester plusieurs solution si j'ai le moindre problème je reviens vers toi.

Bien cordialement et un bon vendredi

-- 10 Juin 2011, 14:09 --

Bonjour,

Après encore quelques tests, je fais remonter, non pas une erreur, mais plutôt une préférence que je pense assez logique.

Dans le fichier en pièce jointe, en rentrant la date du 19/02 dans cette exemple, je trouve le choix de la ligne jaune plus judicieux pour éviter une zone blanche de 1jour sur la ligne noir.

Est ce possible ?

Je continue mes tests en espérant arriver au tableau parfait.

Bien cordialement et merci d'avance pour votre disponibilité.

Salut le forum

Comme demandé par Amadéus, un traitement par macro (VBA)

Sub AjoutEnt()
Dim ColFind As Object
Dim Plg As Object
Dim Ligne As Byte
Dim Cellule As Range

Set ColFind = [Dates].Find([début], lookat:=xlWhole)

If ColFind Is Nothing Then MsgBox "Date invalide": Exit Sub

For Ligne = 10 To 16 Step 2
  Set Plg = Cells(Ligne, ColFind.Column).Resize(, [durée])
    For Each Cellule In Plg
      If Cellule.MergeCells Or CptCellVide(Plg) Then Exit For

    'Traitement de l'entrainement
    With Plg
      Select Case Ligne
        Case 10
         .MergeCells = True
         .Interior.ColorIndex = 1
         .Borders.ColorIndex = 4
        Case 12
         .MergeCells = True
         .Interior.ColorIndex = 6
         .Borders.ColorIndex = 4
        Case 14
         .MergeCells = True
         .Interior.ColorIndex = 3
         .Borders.ColorIndex = 4
        Case 16
         .MergeCells = True
         .Interior.ColorIndex = 41
         .Borders.ColorIndex = 4
      End Select
      .Borders.LineStyle = xlContinuous
      .Borders.Weight = xlThick
    End With

  MsgBox "Traitement Terminé..." & vbCrLf & "La Zone a été ajoutée.": Exit Sub

    Next Cellule
Next Ligne

  MsgBox "Traitement Annulé..." & vbCrLf & "Aucune Zone libre n'a été trouvée."

End Sub

Function CptCellVide(Plage As Variant) As Boolean
    Dim Cellule As Range
    For Each Cellule In Plage
      If Cellule.Interior.ColorIndex <> xlNone Then CptCellVide = True
    Next Cellule
End Function

Mytå

Rechercher des sujets similaires à "aide programme complique"