IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Date planning avec des restrictions


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Spécialiste GMP/Process
    Inscrit en
    Décembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Spécialiste GMP/Process
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2018
    Messages : 3
    Par défaut Date planning avec des restrictions
    Bonjour,

    J'aurais besoin d'aide avec des formules VBA. J'ai essayé tout ce que j'étais en mesure de faire avec des formules excel, mais il semblerait que je n'ai pas le chose d'utiliser VBA (et je ne suis pas un pro en programmation...)

    Voici ce que j'aurais besoin d'avoir avec les restriction:

    Pour une cellule de la colonne AM
    si dans la colonne AS (même ligne) il est écrit "first",
    Inscrire dans la colonne AM la date la plus près non utilisée dans les 4 lignes avant et après des colonne AM à AO.

    Répeter pour les mots "Second" "Third" et "fourth" dans la colonne AS.

    Donc par exemple, si dans la ligne 15 de la colonne AS il est écrit "first", la macro va regarder dans les lignes 11 à 19 des colonnes AM AN et AO pour trouver la date maximale et inscrire la date max+1 dans la case AM15. Une fois que tous les " first" de ces rangées sont faits, répéter pour les termes "second", "third" et finalement "fourth"

    Merci pour votre aide!
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Homme Profil pro
    Responsable de production
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de production
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Par défaut
    hello,
    je suis là pour t'aider (avec mes modestes connaissances) mais pas pour faire le job à ta place
    on va travailler avec une boucle, mais pour cela il faut définir où elle commence et quand elle fini
    ou
    je supose que tu veux commencer tes recherches dès que la colonne AM est vide et tu veux finir quand la colonne A est vide?
    il faut savoir également s'il peut avoir des vides dans la colonne AM?

    une fois cela défini on va construire la boucle pour lui dire tu commences ici, si tu trouve cela alors tu recherches les infos et tu les colles là et tu recommences cela tant que tu n'a pas atteint les conditions.

  3. #3
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonsoir
    pas sure d'avoir compris la demande mais voila une piste qui envoie la date max à la colonne AU
    à tester sur une copie de ton travail (aucune responsabilité en cas de perte de données )
    et à adapter à tes besoins
    BONNE CONTINUATION
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub test()
        Dim j As Integer
        Dim L As Long
        Dim Ligdep As Integer
        Dim Ligarr  As Integer
        Dim plage As Range
        Dim a
        With Sheets("Plan condensé")
        L = .Range("AS" & Rows.Count).End(xlUp).Row
        On Error Resume Next
        For j = 5 To L
           Ligdep = j - 4
           Ligarr = j + 4
        Set plage = .Range(.Cells(Ligdep, "AM"), .Cells(Ligarr, "AO"))
        a = Application.WorksheetFunction.Max(plage)
        a = CDate(a)
        If a <> "" Then .Cells(j, "AU") = a
        Next j
    End With
    End Sub

  4. #4
    Candidat au Club
    Homme Profil pro
    Spécialiste GMP/Process
    Inscrit en
    Décembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Spécialiste GMP/Process
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2018
    Messages : 3
    Par défaut
    Merci pour ton aide. Je ne veux pas que tu fasses la job à ma place non plus. C'est en travaillant que je vais apprendre.

    La macro doit s'appliquer dès qu'une date est écrite dans la colonne A. Elle s'arrête la ligne suivante (case A sera vide). Il peut y avoir des cases vide en AM pour certaines lignes où la case A aura une date. La case AM sera toujours vide s'il n'y a pas de date en A.

    Je ne sais pas si je mis prend de la bonne façon...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub Remplissage()
    'déclaration des variables :
    Dim Valeur_Cherchee1 As String
    Dim Valeur_Cherchee2 As String
    Dim Valeur_Cherchee3 As String
    Dim Valeur_Cherchee4 As String
    Dim i As Integer
     
    Valeur_Cherchee1 = "First"
    Valeur_Cherchee2 = "Second"
    Valeur_Cherchee3 = "Third"
    Valeur_Cherchee4 = "Fourth"
     
    'dans la colonne AM de la feuille active
    For Each i In ActiveSheet.Columns(45)
        If Cells(i, 45).Value = Valeur_Cherchee1 Then
            'Trouve la plus petite date dans AP entre i-4 et i+4
            ' Si cette valeur n'est pas dans colonne AM à AO, mettre cette date dans AM(i), sinon prend la prochaine date jusqu'à trouver une date non-utilisée

  5. #5
    Membre confirmé
    Homme Profil pro
    Responsable de production
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de production
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Par défaut
    désolé de ma réponse tardive, mais ces fins d'années sont toujours bien chargées...
    si la solution de BENNSAR te convient pas, pour ma part je partirais plustot avec ce genre de boucle (mais comme dis en début de ce post, c'est selon mes connaissances, il y a surement des solutions plus simple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    dim Ligne as integre 'pour ingrémenter la boucle
    Ligne=2
    Do While cells(ligne,1)<>"" 'tu boucles tant que la colonne 1 n'est pas vide
      if cells(ligne,39) ="" then 'si la colonne AM est vide alors
        if cells (ligne,45)="First")then 'si dans la colonne on trouve first
          'le code pour trouver les dates
        elseif cells (ligne,45)="Second")then 'si dans la colonne il trouve second
          'code pour trouver les dates
        'etc
        end if
      end if
      ligne=ligne+1
    loop

  6. #6
    Membre confirmé
    Homme Profil pro
    Responsable de production
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de production
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Par défaut
    oups je vois deux erreur de frappe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if cells (ligne,45)="First")then 'une parenthèse de trop
    if cells (ligne,45)="First"then

  7. #7
    Candidat au Club
    Homme Profil pro
    Spécialiste GMP/Process
    Inscrit en
    Décembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Spécialiste GMP/Process
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2018
    Messages : 3
    Par défaut
    Bonjour,

    La solution de BENNASR ne répond pas exactement à ce que je veux, par contre, elle me donne un bon coup de pouce pour débuter. Je vais travailler sur ca pendant le congé des fêtes et vous revenir en janvier pour vous faire un suivi, car je vais surement avoir encore besoin d'aide plus loin!

    Encore merci

    Joyeux temps des fêtes

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Trier mon planning avec des horaires
    Par jetset30 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 19/11/2009, 17h36
  2. créer un plan avec des coordonnées
    Par relena93 dans le forum Qt
    Réponses: 1
    Dernier message: 09/03/2009, 20h54
  3. Réponses: 1
    Dernier message: 15/06/2008, 12h32
  4. [Dates] Problème avec des dates et Heures
    Par snakejl dans le forum Langage
    Réponses: 9
    Dernier message: 16/05/2006, 18h04
  5. Afficher un fond en arrière plan avec des boutons
    Par eGen dans le forum Agents de placement/Fenêtres
    Réponses: 15
    Dernier message: 03/04/2005, 23h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo