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 :

Prb code vba [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    ambulancier
    Inscrit en
    Juin 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : ambulancier
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2017
    Messages : 40
    Par défaut Prb code vba
    bonjour dans le code suivant
    je voudrais que cette macros s'applique de la feuille 1 a la feuille 31 qui corresponde aux nombres de jours mensuel
    (pas uniquement a la feuille 01)

    je ne sais pas comment reprendre ce code et modifié worksheet ,sheet ???
    merci pour votre aide

    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
    Sub maj_rdv()
    '
    ' maj_rdv Macro
    '
     
    '
        ActiveSheet.Unprotect
        Range("A14:N100").Select
        ActiveWorkbook.Worksheets("01").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("01").Sort.SortFields.Add Key:=Range("A14"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("01").Sort
            .SetRange Range("A14:N100")
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        Selection.Rows.AutoFit
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    End Sub

  2. #2
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    Bonjour à vous,

    Vous pouvez essayer le 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
    Sub maj_rdv()
        Dim Sht As Worksheet, i As Integer
        For i = 1 to 31
            Set Sht = ThisWorkbook.Sheets(Format(i, "00"))
            With Sht
                .SortFields.Clear
                .SortFields.Add Key:=.Range("A14"), SortOn:=xlSortOnValues, _
                        Order:=xlAscending, DataOption:=xlSortNormal
                .Sort.SetRange .Range("A14:N100")
                With .Sort
                    .Header = xlNo
                    .MatchCase = False
                    .Orientation = xlTopToBottom
                    .SortMethod = xlPinYin
                    .Apply
                End With
                .Range("A14:N100").Rows.AutoFit
                .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
            End With
        Next i
    End Sub
    J'ai quelques doutes sur le bon fonctionnement de ce code car je ne suis pas certain de savoir ce que vous voulez faire.
    De façon générale, lorsque vous utilisez l'enregistreur de macro, il faut nettoyer le code afin de ne conserver que les lignes qui vous sont utiles (et accessoirement d'éviter les appels à l'objet Selection, qui sont souvent sources de problèmes).

    Cordialement

  3. #3
    Membre averti
    Homme Profil pro
    ambulancier
    Inscrit en
    Juin 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : ambulancier
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2017
    Messages : 40
    Par défaut Prb code Vba
    oui en fait pour vous expliquez
    j ai creer un bouton de commande associé a une macros "via enregisteur de macros"
    ce que je souhaite faire est

    1 /deproteger la feuille
    2/ selectionner la plage de cellule de A14 a N100
    3/ Trier par ordre croissant
    4/ ajuster Automatiquent la hauteur de ligne
    5/ Proteger la feuilles

    macros utillisees sur 31 feuilles
    En vous remerciant

  4. #4
    Membre averti
    Homme Profil pro
    ambulancier
    Inscrit en
    Juin 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : ambulancier
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2017
    Messages : 40
    Par défaut remeriement
    ca a l'air de fonctionner
    Merci Beaucoup

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par boucseb79 Voir le message
    Bonjour,

    A adapter :

    Attention, l'entête n'est pas prise en compte dans votre code.


    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
    42
    43
    44
    45
    46
    47
    48
     
    Sub Maj_Rdv(ByVal FeuilleRdv As Worksheet)
     
    Dim AireATrier As Range, CelluleCritere As Range
     
     
        With FeuilleRdv
            .Unprotect
            Set AireATrier = .Range("A14:N100")
            Set CelluleCritere = .Range("A14")
     
            .Sort.SortFields.Clear
            .Sort.SortFields.Add Key:=CelluleCritere, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            With .Sort
                .SetRange AireATrier
                .Header = xlNo  ' Attention l'entête n'est pas comprise
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
            .Rows.AutoFit
            .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
        End With
     
        Set AireATrier = Nothing
        Set CelluleCritere = Nothing
     
    End Sub
     
     
    Sub EssaiMaj_Rdv()
     
    Dim I As Integer
    Dim MaListeDOnglets As Variant
    Dim MonOnglet As Worksheet
     
     
        MaListeDOnglets = Array("01", "02", "03", "04", "05") ' A compléter
        For I = LBound(MaListeDOnglets) To UBound(MaListeDOnglets)
            For Each MonOnglet In Sheets
                If MonOnglet.Name = MaListeDOnglets(I) Then
                    Maj_Rdv MonOnglet
                End If
            Next MonOnglet
        Next I
     
    End Sub

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

Discussions similaires

  1. afficher un graphique dans word à partir de mon code vba
    Par guysocode dans le forum VBA Word
    Réponses: 2
    Dernier message: 07/11/2005, 14h15
  2. Réponses: 2
    Dernier message: 27/10/2005, 15h51
  3. Réponses: 4
    Dernier message: 13/10/2005, 14h44
  4. Réponses: 3
    Dernier message: 06/09/2005, 10h27
  5. Comment creer une procédure stockée à partir d'un code VBA?
    Par Alcor020980 dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 24/05/2005, 19h55

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