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 :

Macro a completer


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2014
    Messages : 4
    Par défaut Macro a completer
    Bonsoir le forum,
    j'ai un tableau horaires en colonne "F" doit se trouver les Intitulés suivant:
    "CP","RTTD","SAM","DIM" etc...mon code est le suivant:
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("B6:NB41")) Is Nothing Then
    onglet = Cells(x, 1)
    lejour = Format(Cells(4, y), "dd/mmmm/yyyy")
    Sheets(onglet).Cells(y + 2, 6) = Cells(x, y).Value
    Sheets(onglet).Cells(y + 2, 1) = lejour
    If Cells(x, y) = "" Then Sheets(onglet).Cells(y + 2, 1) = ""
    End If
    If Target.Address <> "$A$4" Then Exit Sub
    Application.ScreenUpdating = False
    Columns("B:NB").Hidden = True
    Select Case Target
    Case "Année complète"
    Columns("B:NB").Hidden = False
    Case "Janvier"
    Columns("B:AF").Hidden = False
    Case "Février"
    Columns("AG:BH").Hidden = False
    Case "Mars"
    Columns("BI:CM").Hidden = False
    Case "Avril"
    Columns("CN:DQ").Hidden = False
    Case "Mai"
    Columns("DR:EV").Hidden = False
    Case "Juin"
    Columns("EW:FZ").Hidden = False
    Case "Juillet"
    Columns("GA:HE").Hidden = False
    Case "Août"
    Columns("HF:IJ").Hidden = False
    Case "Septembre"
    Columns("IK:JN").Hidden = False
    Case "Octobre"
    Columns("JO:KS").Hidden = False
    Case "Novembre"
    Columns("KT:LW").Hidden = False
    Case "Décembre"
    Columns("LX:NB").Hidden = False
    End Select
    Application.ScreenUpdating = True
    End Sub
    la ligne en rouge correspond au renvoi en colonne "F"
    par contre je n'arrive pas a intégrer en plus ce morceau de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(onglet).Cells(y + 2, 7) = Cells(x, y).Value
    qui me renverrai mes données dans la colonne "G" uniquement pour les "NUIT"
    merci par avance de votre aide

  2. #2
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut macro à compléter
    Bonjour,

    Peux-tu expliquer ce que sont x et y ?
    En l'état, sauf incompréhension de ma part, ils ne représentent rien pour VBA et devraient entrainer une erreur.

    cordialement,

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2014
    Messages : 4
    Par défaut
    Bonjour le Nibledispo et le Forum,
    je suis désolé, je ne n'ai pas fait attention il manqué un bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public x, y As Long
    Public onglet As String
    Public lejour As Date
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    x = ActiveCell.Row
    y = ActiveCell.Column
    End Sub
    et ensuite dans un module code suivant:
    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
    25
    26
    27
    28
    29
    30
    31
    Function NomOnglet()
        Application.Volatile
        NomOnglet = Application.Caller.Parent.Name
    End Function
     
    Public Sub charge_FNOMS()
    Application.Calculation = xlCalculationManual
            If Sheets("LISTE").Range("L1") <> "" Then
            Application.EnableEvents = False
                fin = Sheets("LISTE").Range("L1").End(xlDown).Row
                    For uy = 1 To fin
                        For uz = 1 To 366
                            x = uy + 5
                            y = uz + 1
                            jh = Sheets("PLANNING 2014").Cells(uy + 5, uz + 1)
     
                                If Sheets("PLANNING 2014").Cells(uy + 5, uz + 1) <> "" Then
     
     
                                    onglet = Sheets("PLANNING 2014").Cells(x, 1)
                                    lejour = Format(Sheets("PLANNING 2014").Cells(4, y), "dddd d mmmm")
                                    Sheets(onglet).Cells(y + 2, 6) = Sheets("PLANNING 2014").Cells(x, y).Value
                                    Sheets(onglet).Cells(y + 2, 1) = lejour
                                    If Sheets("PLANNING 2014").Cells(x, y) = "" Then Sheets(onglet).Cells(y + 2, 1) = ""
                                End If
                        Next uz
                    Next uy
                Application.EnableEvents = True
            End If
    Application.Calculation = xlCalculationAutomatic
    End Sub
    je m'explique dans une feuille se trouve mon planning
    _a partir de la ligne "A6" jusques la ligne "A41" se trouve les noms des personnes.
    _de la colonne "B4" a "NB41" se sont les dates
    _ et chaque cellule de ce tableau est alimenté par :"CP" "DIM" "SAM" "NUIT"...

    puis transfert des données sur:

    SUR une autre Feuille (personnelle a chaque employé) se trouve:
    en colonne "A"_les dates
    en colonne " B,C,D,E" _les heures
    en colonne "F" l'intitulé_ "CP" "DIM" "SAM" "REPAS"....
    en colonne "G" _ "NUIT" (uniquement cette dénomination )

  4. #4
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut macro à compléter
    Bonjour,

    En partant du code de ta derniere intervention (proche du code 1ere intervention), n'est-ce pas cela que tu cherches à obtenir ?
    je ne suis pas convaincu que les instructions "enableEvents" ait une utilité.

    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
    25
    26
    27
    28
    29
     
    Public Sub charge_FNOMS()  'dans un module
    Application.Calculation = xlCalculationManual
            If Sheets("LISTE").Range("L1") <> "" Then
                Application.EnableEvents = False
                fin = Sheets("LISTE").Range("L1").End(xlDown).Row
                    For uy = 1 To fin
                        For uz = 1 To 366
                            x = uy + 5
                            y = uz + 1
                            jh = Sheets("PLANNING 2014").Cells(x, y)
     
                            If jh <> "" Then
                                onglet = Sheets("PLANNING 2014").Cells(x, 1)
                                lejour = Format(Sheets("PLANNING 2014").Cells(4, y), "dddd d mmmm")
                                Sheets(onglet).Cells(y + 2, 1) = lejour
     
                                If jh.Value = "nuit" Then
                                   Sheets(onglet).Cells(y + 2, 7) = jh.Value
                                Else
                                   Sheets(onglet).Cells(y + 2, 6) = jh.Value
                                End If
                            End If
                        Next uz
                    Next uy
                Application.EnableEvents = True
            End If
    Application.Calculation = xlCalculationAutomatic
    End Sub
    Cordialement,

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2014
    Messages : 4
    Par défaut Re
    Bonjour Paul et le Forum,
    cela ne marche pas.
    puis je t'envoyer un morceau du fichier ?
    merci

  6. #6
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut macro à compléter
    Bonsoir,

    Il faudrait déjà savoir si ce que j'ai mis dans cette sub ne devrait pas être logé dans la sub "workshett_change" car il semble que x et y sont les coordonnées de "target".

    Par ailleurs, avoir des lignes d'instructions qui font la même chose dans deux sub donne à penser que le code est mal ficelé.Essai de mettre les lignes d'instructions dans Workshett_change.

    J'ai de gros soucis avec mon Office et ne charge plus les fichiers des intervenants sur mon ordinateur tant que le problème ne sera pas réglé.

    Cordialement,

Discussions similaires

  1. [XL-2007] Aide à completer deux détails dans ma macro
    Par INFINITY100 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/05/2015, 00h23
  2. [XL-2007] Besoin d'aide pour completer ma macro
    Par INFINITY100 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/04/2015, 01h58
  3. [XL-2003] Macro agissant sur un dossier complet
    Par Kaussa dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/09/2012, 16h18
  4. Réponses: 0
    Dernier message: 26/01/2012, 10h45
  5. [XL-2007] comparer les données reçues sur un mois et completer les données manquantes par une macro.
    Par wisemanvsfatboy dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/11/2010, 17h16

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