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

Excel Discussion :

Perte des liens vers des macros


Sujet :

Excel

  1. #1
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 96
    Points : 63
    Points
    63
    Par défaut Perte des liens vers des macros
    Bonjour à tous !

    Voilà je vous explique mon petit problème, j'ai quelques boutons dans un onglet qui me permette de lancer la création d'une nouvelle feuille pour finalement la déplacer dans [EDIT] un nouveau classeur.

    Ce dernier bout de code (que j'ai créer grâce à l'enregistreur de macro) ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.CutCopyMode = False
    wkbook.sheets(Nouvelle_Zone).Move
    Ceci me créer bien un nouveau classeur avec la feuille nouvellement crée. A savoir que wkbook et Nouvelle_zone sont respectivement une référence à mon classeur de départ et une chaine de caractère du même nom que la feuille.

    Le problème fait que tous mes boutons que j'utilise dont celui que j'ai utilisé pour lancer la macro ne pointe plus sur 'Mon Fichier'!Ma_macro mais sur 'Classeur1!Ma_macro... Alors que je n'ai effectué aucun traitement sur ces boutons et qu'ils sont toujours dans le même classeur.

    Comment puis je rendre ces liens "statiques" sans quoi il faut remodifier les liens vers à chaque utilisation de cette macro ????

    Merci d'avance !

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    et avec cette méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Sheets("feuil1").Copy After:=Sheets(4)' a adapter
        Sheets("feuil1 (2)").Name = "toto" ' a adapter
    tes macros devraient garder leur code

    Bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Ton code fonctionne très bien, pour preuve, c'est celui que j'utilisais jusqu'à lors et je ne perdais pas mes liens bien évidement.

    Mais ce que je voudrais faire ici c'est de récupérer la nouvelle feuille dans un nouveau classeur.

    Ce que je ne saisi pas c'est pourquoi ces liens sont "dynamiques" et si c'est lié à la commande move ou activate que j'utilise un peu plus haut dans le code ?

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    je n'avais pas assez bien regardé ta demande mais je pense à un subterfuge en passant par une variable mais il faudrait que tu mettes ton code pour vérifier mon idée.
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Entretemps j'ai essayé de "verrouiller" les boutons, de modifier la portée de ces modules et fonctions mais rien y fait. :/

    Sinon voilà le code de mon module :
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    Option Explicit
    
    
    Global Const zone_cryospace = "Cryospace"
    Global Const zone_assistantTechnique = "AssistantTechnique"
    Global Const zone_interimaire = "Intérimaire"
    Global Const zone_personnel = "Personnel"
    Global Const zone_sortie = "Sortie"
    Global Const Nouvelle_zone = "Liste_Gestion"
    
    Public Sub Nouvelle_Liste()
        Dim str_gestion As String
        Dim dtm_date As Date
        Dim str_zone As String
        Dim Ligne As Range
        Dim Liste_ligne As Range
        Dim wkbook As Workbook
        
        Set wkbook = ActiveWorkbook
        
        str_gestion = Worksheets(onglet_formulaire).Range("K11").Value
        dtm_date = CDate(Worksheets(onglet_formulaire).Range("K10").Value)
    
       
        wkbook.Sheets("Liste Employé").Copy After:=Sheets(10)
        wkbook.Sheets("Liste Employé (2)").Name = Nouvelle_zone
        
        wkbook.Names.Add Name:=Nouvelle_zone, RefersToR1C1:="='Liste_Gestion'!R1C1:R3C21"  'Chr(39) & Nouvelle_zone & Chr(39) & "!R1C1:R3C21"
         
        Select Case str_gestion
            Case "Cryospace"
                str_zone = zone_cryospace
        
            Case "Intérimaire"
                str_zone = zone_interimaire
    
            Case "Assistant Technique"
                str_zone = zone_assistantTechnique
        End Select
        
        For Each Ligne In Evaluate(zone_sortie).Rows
            DoEvents
            If VarType(Ligne.Columns("U").Value) = vbDate Then
                If Ligne.Columns("W") = str_gestion Then 'W est la colonne masquée : Gestion ** Test si il correspond à la demande
                    If CDate(Ligne.Columns("U")) <= dtm_date And CDate(Ligne.Columns("V")) >= dtm_date Then 'S'il est compris entre les dates
                    
                    '*** Ajout d'une ligne dans liste gestion
                    Set Liste_ligne = Evaluate(Nouvelle_zone)
                    Set Liste_ligne = Liste_ligne.Rows(Liste_ligne.Rows.Count)
                    
                    Liste_ligne.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                    
                    Set Liste_ligne = Evaluate(Nouvelle_zone)
                    Set Liste_ligne = Liste_ligne.Rows(Liste_ligne.Rows.Count - 1)
                    
                    '*** Copie de la ligne
                    Ligne.Copy
                    Liste_ligne.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                    
                    End If
                End If
            End If
        Next Ligne
        
        
        For Each Ligne In Evaluate(str_zone).Rows
            DoEvents
                If VarType(Ligne.Columns("U").Value) = vbDate Then
                    If CDate(Ligne.Columns("U").Value) <= dtm_date And (CDate(Ligne.Columns("V")) >= dtm_date Or (Ligne.Columns("V") = "")) Then 'S'il est compris entre les dates
                    
                    '*** Ajout d'une ligne dans liste gestion
                    Set Liste_ligne = Evaluate(Nouvelle_zone)
                    Set Liste_ligne = Liste_ligne.Rows(Liste_ligne.Rows.Count)
                    
                    Liste_ligne.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                    
                    Set Liste_ligne = Evaluate(Nouvelle_zone)
                    Set Liste_ligne = Liste_ligne.Rows(Liste_ligne.Rows.Count - 1)
                    
                    '*** Copie de la ligne
                    Ligne.Copy
                    Liste_ligne.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                    End If
                End If
        Next Ligne
        wkbook.Sheets(Nouvelle_zone).Visible = True
        
        Application.CutCopyMode = False
        wkbook.Sheets(Nouvelle_zone).Move
        
        ActiveWorkbook.Sheets(Nouvelle_zone).Activate
        wkbook.Names(Nouvelle_zone).Delete
        ActiveWorkbook.Sheets(Nouvelle_zone).Name = InputBox("Veuillez entrer un nom d'onglet pour cette nouvelle liste", "Information complémentaire")
        wkbook.Activate
        
        Set wkbook = Nothing
        
    End Sub
    Ah et aussi je ne me targue pas d'être un excellent codeur (bien au contraire ) donc je suis preneur de toute remarque sur mon code D'ailleurs je sais qu'il n'est pas beaucoup commenter mais j'espère qu'il est compréhensible.

  6. #6
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    je pense que ça vient de là, je n'ai pas détaillé le reste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wkbook = ActiveWorkbook
    il vaut mieux, à mon avis nommer le classeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wkbook = Workbooks("nomduclasseur.xls")
    je n'ai pas été plus loin
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    J'ai testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set wkbook = Workbooks(ActiveWorkbook.name)
    Set wkbook = Workbooks("Liste personnel.xlsm")
    Et le problème reste le même :/
    Je pense que la solution du dernier recours ça sera une procédure qui traite les boutons et réaffecte les liens avec le bon nom de fichier ce qui ne me plait pas des masses.

  8. #8
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    tu fait quelle différence entre onglet et feuille?

  9. #9
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Ah j'ai pas fais attention mais pour moi onglet et feuille c'est indifférent on parle bien de la même chose d'une "Worksheet". (Ce que je pense être vrai sinon c'est une faute de connaissance de ma part)

  10. #10
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut
    la création d'une nouvelle feuille pour finalement la déplacer dans un nouvel onglet
    C'est peut-etre en réaction a cette phrase la dans le message d'origine. J'avais butté dessus aussi avant de conclure que tu parlais d'une nouvelle feuille pour finalement la déplacer dans un nouveau classeur

  11. #11
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Au temps pour moi je voulais écrire dans un nouveau classeur ! Je vais éditer !

Discussions similaires

  1. [Article] Comment ajouter des liens vers des numéros de téléphone
    Par FirePrawn dans le forum Publications (X)HTML et CSS
    Réponses: 7
    Dernier message: 08/11/2012, 17h21
  2. Faire des liens vers des fichiers EPS et JPEG sur un CD-Rom
    Par arimedia dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 18/07/2009, 21h05
  3. [ETAT]Créer des liens vers des entetes de groupes
    Par tonyice80 dans le forum IHM
    Réponses: 7
    Dernier message: 06/04/2007, 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