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 :

Ecrire x ligne en dessous en rajoutant une valeur fixe.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    AESH
    Inscrit en
    Septembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : AESH

    Informations forums :
    Inscription : Septembre 2018
    Messages : 9
    Par défaut Ecrire x ligne en dessous en rajoutant une valeur fixe.
    Bonjour.

    Voilà, je cherche à faire quelque chose sur excel. J'ai essayé sans vba mais sans une imbrication de si longue comme un jour sans fin, ca ne fonctionnera pas je pense...

    Sur une colonne A, j'aimerai que des heures s'affiche, par tranche de 00:30. Sur la B, en chaque de chaque heures, un chiffre.
    J'aimerai que se chiffre influe sur l'emplacement des heures.

    Par exemple, si ca commence à 7h, et qu'il y a un 2 en face, j'aimerai que 7h30 s'affiche 2 cases en dessous de 7h. Ensuite si y'a 1 en face de 7h30, 8h s'affichera juste en dessous de 7h30, ainsi de suite.

    J’espère avoir été clair.

    Merci d'avance pour votre aide.

    Patakess

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour
    en gros si c'est 2 c'est une demie heure de plus 2 cellules en dessous, si c'est 1 c'est une demie heure de plus 1 cellule en dessous c'est c'est ca ?
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre habitué
    Femme Profil pro
    AESH
    Inscrit en
    Septembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : AESH

    Informations forums :
    Inscription : Septembre 2018
    Messages : 9
    Par défaut
    Bonjour.

    C'est ça oui

    7h30 2

    8h 3


    8h30 1
    9h (etc...)

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    A mettre dans le module de la feuille, la procédure est exécutée quand une valeur est entrée en colonne B en face de l'heure. Attention, je n'ai pas géré le dépassement de 24h et comme tes heures n'en sont pas au sens Excel, tu ne peux faire aucun calcul !
    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
    21
    22
    23
    24
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        Dim Heure As String
        Dim Minute As String
     
        If Target.Column <> 2 Then Exit Sub
     
        If Target.Offset(, -1).Value <> "" Then
     
            Heure = Split(Target.Offset(, -1).Value, "h")(0)
            Minute = Split(Target.Offset(, -1).Value, "h")(1)
     
            Application.EnableEvents = False
     
            If Minute <> "" Then Heure = CInt(Heure) + 1: Minute = "" Else Minute = "30"
     
            Target.Offset(Target.Value, -1).Value = Heure & "h" & Minute
     
        End If
     
        Application.EnableEvents = True
     
    End Sub

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    a mettre dans le module de la feuille
    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
    Function timecalcul(cel, x)
    Dim heure, mins
    heure = Split(cel, ":")(0)
    mins = Split(cel, ":")(1)
    If Val(mins) = 0 Then mins = 30 Else heure = Val(heure) + 1: mins = 0
    timecalcul = Format(heure, "00") & ":" & Format(mins, "00")
    End Function
    '
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 2 And Target.Count = 1 Then
    Target.Offset(Target.Value, -1) = timecalcul(Target.Offset(0, -1).Text, Target.Value)
    End If
    End Sub
    '
    'juste pour tester
    Sub test()
    MsgBox timecalcul("07:00", 2)
    MsgBox timecalcul("08:00", 2)
    MsgBox timecalcul("08:30", 1)
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre habitué
    Femme Profil pro
    AESH
    Inscrit en
    Septembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : AESH

    Informations forums :
    Inscription : Septembre 2018
    Messages : 9
    Par défaut
    Merci à tout les deux.

    Theze: Oui pardon, dans mon exemple en 2eme poste j'ai mis les heures en 00h00 mais à la base j'étais bien partie sur du 00:00 (mais si ca peut foncitonner avec les heures c'est pas plus mal)

    J'essai de.... Faire fonctionner tout ca et je reviens vous dire (le monde de la VBA est un nouveau monde pour moi, donc j'essai de comprendre comment activer les 'modules' que j'ai mis du coup ^^")

  7. #7
    Membre habitué
    Femme Profil pro
    AESH
    Inscrit en
    Septembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : AESH

    Informations forums :
    Inscription : Septembre 2018
    Messages : 9
    Par défaut
    OK ! J'ai saisi et ca fonctionne (j'ai testé les deux, si j'ai bien tout compris, la différence entre vous deux c'est que l'un utilise les heures avec h et l'autre avec : ?)

    Et si, par exemple, j'ai mes infos du nombre de case sur un autre calques et que j'aimerai que ca les recuperent et les rentre automatiquement ?

    Par exemple sur le calque 2 j'ai deux colonnes, avec les heures et les nombres à coté (sans saut de ligne etc), et j'aimerai que sur le calque 1 ca affiche tout ça avec les sauts de ligne correspondant.

    Et dans un monde parfait, est ce que c'est possible que dans la colonne C, en face des heures et des 'trou' correspondant, il y ai des données (en validation de donnés) prise sur un 3ème calque ?

    7h30 2 Liste a prendre dans un calque avec un mot clé
    Liste a prendre dans un calque avec un mot clé
    8h 1 Liste a prendre dans un calque avec un mot clé
    8h30 3 Liste a prendre dans un calque avec un mot clé

    Je ne sais vraiment pas si c'est possible, je découvre ^^".

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    J'ai une question toute bête -->>
    Qu'entends-tu faire (description détaillée) si, après avoir ainsi inséré à leurs lignes (selon ton mécanisme) des heures l'utilisateur revient sur un des chiffres "déclencheurs" et le modifie ?
    Je suis d'autant perplexe sur ce que tu fais (veux faire) là que je lis ;
    le monde de la VBA est un nouveau monde pour moi, donc j'essai de comprendre comment activer les 'modules' que j'ai mis du coup

  9. #9
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Re,

    La même sub que précédemment mais en prenant en compte le format 08:30 et non 8h30. La propriété Text de la cellule est utilisée et non Value afin de bien récupérer le résultat du formatage et non la valeur numérique :
    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
    21
    22
    23
    24
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        Dim Heure As String
        Dim Minute As String
     
        If Target.Column <> 2 Then Exit Sub
     
        If Target.Offset(, -1).Value <> "" Then
     
            Heure = Split(Target.Offset(, -1).Text, ":")(0)
            Minute = Split(Target.Offset(, -1).Text, ":")(1)
     
            Application.EnableEvents = False
     
            If Minute <> "00" Then Heure = CInt(Heure) + 1: Minute = "00" Else Minute = "30"
     
            Target.Offset(Target.Value, -1).Value = Heure & ":" & Minute
     
        End If
     
        Application.EnableEvents = True
     
    End Sub

  10. #10
    Membre habitué
    Femme Profil pro
    AESH
    Inscrit en
    Septembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : AESH

    Informations forums :
    Inscription : Septembre 2018
    Messages : 9
    Par défaut
    Unparia:

    Le fichier ne va etre utilisé que par moi ou par une seule personne à chaque fois donc personne ne viendra modifier une fois 'fait'.

    En fait en gros j'ai un planning avec par exemple,
    Dans la cuisine, il faut 3 personnes de 7h à 7h30, puis 4 de 7h30 à 8h
    Dans le salon, il faut 2 personnes de 7h à 7h30, puis 1 de 7h30 à 8h
    etc. etc.

    Avec ca, j'ai un onglet avec qui peut aller où:
    Cuisine ------- Salon
    Pierre --------- Paul
    Paul -----------Julie
    Jacques -------Léa
    etc.

    Donc, au final, j'aimerai que dans un 3eme onglet, j'ai un tableau qui puisse m'aider à faire les plannings
    Donc

    Dans la cuisine
    7h j'ai besoin de 3 personnes que je choisis parmis Pierre Paul Jacques (etc.)
    7h30 etc...

    Dans le salon
    (on recommence)

    Cuisine Salon
    7h 3 Choix parmis Pierre Paul Jacques 7h 2 Choix parmi Paul Julie Léa
    Choix parmis Pierre Paul Jacques Choix parmi Paul Julie Léa
    Choix parmis Pierre Paul Jacques 7h30 1 Choix parmi Paul Julie Léa
    7h30 2 Choix parmis Pierre Paul Jacques 8h 4 Choix parmi Paul Julie Léa

    Etc.... Et si je suis là c'est parce que je sais qu'il faut du VBA, mais je n'y comprends pas grand chose. C'est un langage totalement nouveau, et j'essaye d'apprendre et de comprendre, avec justement les exemples et les questions...

    Theze: Merci, je vais essayer

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/10/2011, 15h52
  2. Rajouter une valeur dans un tableau en C++
    Par Versace31 dans le forum C++
    Réponses: 1
    Dernier message: 12/06/2008, 09h26
  3. Tableau avec une ligne d'en-tête et une colonne fixe
    Par Invité dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 22/11/2006, 18h45
  4. DBGRID rajouter une valeur manuellement
    Par Telemak dans le forum Bases de données
    Réponses: 9
    Dernier message: 25/06/2006, 10h52
  5. [SQL] Problème requête sql,rajouter une valeur,checbox
    Par snakejl dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/06/2006, 11h18

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