Macro n'aime pas la nouvelle année
Résolu
thony
-
Le Pingou Messages postés 12249 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12249 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j'ai mis en place une macro en 2013 pour améliorer l'ergonomie d'une base de données excel. Elle permet notamment la création automatique de lien hypertexte pour aller dans le dossier correspondant à la ligne consultée en cliquant sur la référence de la colonne L.
En début d'année j'ai ouvert le fichier nommé "bilan 2013.xls" présent dans le répertoire "Année 2013", j'ai enregistré sous le nom "bilan 2014.xls" et sous le répertoire "Année 2014".
Avec le fichier "bilan 2013.xls", j'ouvre et les liens hypertextes sont de suite actifs sans valider aucune cellule. En passant la souris sur les cellules de la colonne L, je vois s'afficher le lien hypertexte donc tout va bien.
Par contre avec le fichier "bilan 2014.xls" les liens hypertextes ne sont plus fonctionnels à l'ouverture du fichier, on ne voit pas le lien hypertexte en survolant les cellules et il faut obligatoirement entrer dans une cellule de la colonne L, et en valider le contenu pour que les liens hypertextes fonctionnent.
Je ne comprends pas cette différence de fonctionnement juste pour un changement de nom de fichier et d'un répertoire d'enregistrement.
Avez vous une idée ?
Ci dessous le code de ma macro :
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False 'désactive le rafraîchissement d'écran
Dim derlign As Long
Dim Lien
Dim zone As Range
Dim cell As Range
Dim nom As String
Dim répertoire As String
répertoire = "\\bfrclocfp01\Ordo$\CONTROLE\Bilan Fournisseur\Année "
derlign = ActiveSheet.Range("L65536").End(xlUp).Row ' recuperation numero derniere ligne non vide en colonne L
If Not Intersect(Target, Columns("L")) Is Nothing Then 'vérifie si une valeur change en colonne L, si oui macro s'active
Set zone = ActiveSheet.Range("L" & 2, "L" & derlign) 'défini la zone de travail de la macro
For Each cell In zone
On Error Resume Next
' vérifie l'existence du répertoire année, sinon le créé
ChDir répertoire & Range("B" & cell.Row)
If Err <> 0 Then
MkDir répertoire & Range("B" & cell.Row)
End If
' vérifie l'existence du répertoire retour, sinon le créé
ChDir répertoire & Range("B" & cell.Row) & "\Non conformité"
If Err <> 0 Then
MkDir répertoire & Range("B" & cell.Row) & "\Non conformité"
End If
' vérifie l'existence du répertoire fournisseur, sinon le créé
ChDir répertoire & Range("B" & cell.Row) & "\Non conformité\" & Range("F" & cell.Row)
If Err <> 0 Then
MkDir répertoire & Range("B" & cell.Row) & "\Non conformité\" & Range("F" & cell.Row)
End If
' vérifie l'existence du sous répertoire du nom de la référence de la NC, sinon le créé
ChDir répertoire & Range("B" & cell.Row) & "\Non conformité\" & Range("F" & cell.Row) & "\" & Range("L" & cell.Row)
' vérifie qu'il existe la lettre R ou D pour poursuivre et créer le lien sinon passe à la cellule suivante car NC annulée
If Left(Range("L" & cell.Row), 1) = "R" Or Left(Range("L" & cell.Row), 1) = "D" Then
If Err <> 0 Then
MkDir répertoire & Range("B" & cell.Row) & "\Non conformité\" & Range("F" & cell.Row) & "\" & Range("L" & cell.Row)
End If
'format du lien hypertexte
Lien = répertoire & cell.Offset(0, -10) & "\Non conformité\" & cell.Offset(0, -6) & "\" & cell
'création du lien hypertexte
ActiveSheet.Hyperlinks.Add Anchor:=cell, Address:=Lien
End If
Next cell
End If
Set zone = Nothing 'vide la mémoire
Application.ScreenUpdating = True 'réactive le rafraîchissement d'écran
End Sub
j'ai mis en place une macro en 2013 pour améliorer l'ergonomie d'une base de données excel. Elle permet notamment la création automatique de lien hypertexte pour aller dans le dossier correspondant à la ligne consultée en cliquant sur la référence de la colonne L.
En début d'année j'ai ouvert le fichier nommé "bilan 2013.xls" présent dans le répertoire "Année 2013", j'ai enregistré sous le nom "bilan 2014.xls" et sous le répertoire "Année 2014".
Avec le fichier "bilan 2013.xls", j'ouvre et les liens hypertextes sont de suite actifs sans valider aucune cellule. En passant la souris sur les cellules de la colonne L, je vois s'afficher le lien hypertexte donc tout va bien.
Par contre avec le fichier "bilan 2014.xls" les liens hypertextes ne sont plus fonctionnels à l'ouverture du fichier, on ne voit pas le lien hypertexte en survolant les cellules et il faut obligatoirement entrer dans une cellule de la colonne L, et en valider le contenu pour que les liens hypertextes fonctionnent.
Je ne comprends pas cette différence de fonctionnement juste pour un changement de nom de fichier et d'un répertoire d'enregistrement.
Avez vous une idée ?
Ci dessous le code de ma macro :
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False 'désactive le rafraîchissement d'écran
Dim derlign As Long
Dim Lien
Dim zone As Range
Dim cell As Range
Dim nom As String
Dim répertoire As String
répertoire = "\\bfrclocfp01\Ordo$\CONTROLE\Bilan Fournisseur\Année "
derlign = ActiveSheet.Range("L65536").End(xlUp).Row ' recuperation numero derniere ligne non vide en colonne L
If Not Intersect(Target, Columns("L")) Is Nothing Then 'vérifie si une valeur change en colonne L, si oui macro s'active
Set zone = ActiveSheet.Range("L" & 2, "L" & derlign) 'défini la zone de travail de la macro
For Each cell In zone
On Error Resume Next
' vérifie l'existence du répertoire année, sinon le créé
ChDir répertoire & Range("B" & cell.Row)
If Err <> 0 Then
MkDir répertoire & Range("B" & cell.Row)
End If
' vérifie l'existence du répertoire retour, sinon le créé
ChDir répertoire & Range("B" & cell.Row) & "\Non conformité"
If Err <> 0 Then
MkDir répertoire & Range("B" & cell.Row) & "\Non conformité"
End If
' vérifie l'existence du répertoire fournisseur, sinon le créé
ChDir répertoire & Range("B" & cell.Row) & "\Non conformité\" & Range("F" & cell.Row)
If Err <> 0 Then
MkDir répertoire & Range("B" & cell.Row) & "\Non conformité\" & Range("F" & cell.Row)
End If
' vérifie l'existence du sous répertoire du nom de la référence de la NC, sinon le créé
ChDir répertoire & Range("B" & cell.Row) & "\Non conformité\" & Range("F" & cell.Row) & "\" & Range("L" & cell.Row)
' vérifie qu'il existe la lettre R ou D pour poursuivre et créer le lien sinon passe à la cellule suivante car NC annulée
If Left(Range("L" & cell.Row), 1) = "R" Or Left(Range("L" & cell.Row), 1) = "D" Then
If Err <> 0 Then
MkDir répertoire & Range("B" & cell.Row) & "\Non conformité\" & Range("F" & cell.Row) & "\" & Range("L" & cell.Row)
End If
'format du lien hypertexte
Lien = répertoire & cell.Offset(0, -10) & "\Non conformité\" & cell.Offset(0, -6) & "\" & cell
'création du lien hypertexte
ActiveSheet.Hyperlinks.Add Anchor:=cell, Address:=Lien
End If
Next cell
End If
Set zone = Nothing 'vide la mémoire
Application.ScreenUpdating = True 'réactive le rafraîchissement d'écran
End Sub
A voir également:
- Macro n'aime pas la nouvelle année
- Darkino nouvelle adresse - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Extreme download nouvelle adresse - Accueil - Outils
- Darkino : le grand site pirate change d'adresse et d'interface - Accueil - Services en ligne
- Jitbit macro recorder - Télécharger - Confidentialité
12 réponses
Bonjour,
Est-ce que cette macro a servie pour le passage 2012 à 2013 et si oui les liaisons hypertextes fonctionnaient-elles ?
Est-ce que cette macro a servie pour le passage 2012 à 2013 et si oui les liaisons hypertextes fonctionnaient-elles ?
Bonjour,
Si j'ai bien compris cela n'as jamais été testé.
Pouvez-vous mettre à disposition une partie d'un fichier pour que je puisse réaliser un test.
Si oui le mettre sur https://www.cjoint.com/ et poster le lien.
Si j'ai bien compris cela n'as jamais été testé.
Pouvez-vous mettre à disposition une partie d'un fichier pour que je puisse réaliser un test.
Si oui le mettre sur https://www.cjoint.com/ et poster le lien.
Bonjour,
le fichier en question
http://cjoint.com/?3BctvQq2oH3
on voit que sur l'onglet fichier de travail, cellule L240 on a un lien hypertexte qui s'est créé, tout comme dans l'onglet livraisons contrôlées en L3 ou dans la colonne L de l'onglet articles. il s'agit de dysfonctionnement en plus du principal, plus de création des liens hypertextes lors de l'ouverture du fichier
le fichier en question
http://cjoint.com/?3BctvQq2oH3
on voit que sur l'onglet fichier de travail, cellule L240 on a un lien hypertexte qui s'est créé, tout comme dans l'onglet livraisons contrôlées en L3 ou dans la colonne L de l'onglet articles. il s'agit de dysfonctionnement en plus du principal, plus de création des liens hypertextes lors de l'ouverture du fichier
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir,
exact je me confonds entre mon pseudo et mon prénom, autant pour moi.
le fichier en question
http://cjoint.com/?3BctvQq2oH3
on voit que sur l'onglet fichier de travail, cellule L240 on a un lien hypertexte qui s'est créé, tout comme dans l'onglet livraisons contrôlées en L3 ou dans la colonne L de l'onglet articles. il s'agit de dysfonctionnement en plus du principal, plus de création des liens hypertextes lors de l'ouverture du fichier
thony
exact je me confonds entre mon pseudo et mon prénom, autant pour moi.
le fichier en question
http://cjoint.com/?3BctvQq2oH3
on voit que sur l'onglet fichier de travail, cellule L240 on a un lien hypertexte qui s'est créé, tout comme dans l'onglet livraisons contrôlées en L3 ou dans la colonne L de l'onglet articles. il s'agit de dysfonctionnement en plus du principal, plus de création des liens hypertextes lors de l'ouverture du fichier
thony
Bonjour,
Merci pour le fichier.
Pour information j'avais recrée une application selon la procédure de votre code et les liens obtenu en colonne [L] fonctionnaient correctement en ouvrant à chaque fois le bon répertoire. Je suppose que c'est ce que vous vouliez.
J'ai parcouru votre fichier et dans un premier constat j'ai remarqué que les lins ne sont pas correctement écrit selon les référence de votre code (par exemple, pour ajout de l'année : il y a : Année%202013 .... Ce devrait-être Année%2013.... !
Je vais contrôler l'exécution de la procédure sur votre classeur et vous donnerez une réponse.
Note: pouvez-vous m'indiquer la version Excel que vous utilisez...?
Salutations.
Le Pingou
Merci pour le fichier.
Pour information j'avais recrée une application selon la procédure de votre code et les liens obtenu en colonne [L] fonctionnaient correctement en ouvrant à chaque fois le bon répertoire. Je suppose que c'est ce que vous vouliez.
J'ai parcouru votre fichier et dans un premier constat j'ai remarqué que les lins ne sont pas correctement écrit selon les référence de votre code (par exemple, pour ajout de l'année : il y a : Année%202013 .... Ce devrait-être Année%2013.... !
Je vais contrôler l'exécution de la procédure sur votre classeur et vous donnerez une réponse.
Note: pouvez-vous m'indiquer la version Excel que vous utilisez...?
Salutations.
Le Pingou
Bonjour,
En suivant votre code, une information manque.... !
J'ai une question : que doit ouvrir le lien hypertexte.... Le dossier ou se trouve les classeurs ou un classeur ou... » ?
En suivant votre code, une information manque.... !
J'ai une question : que doit ouvrir le lien hypertexte.... Le dossier ou se trouve les classeurs ou un classeur ou... » ?
Bonjour,
J'ai réalisé les tests sur votre fichier et tout est correct.
Je pense qu'il est nécessaire de refaire les liens.
Je vous propose de sélectionner, dans la colonne [L] toutes les cellules qui contiennent un lien et de supprimer les liens (clic droit et clic Supprimer le lien hypertexte). Ensuite vous sélectionnez la cellule [L3] vous cliquez dans la barre des formule et vous validez avec [?] ou [ENTER].
Salutations.
Le Pingou
J'ai réalisé les tests sur votre fichier et tout est correct.
Je pense qu'il est nécessaire de refaire les liens.
Je vous propose de sélectionner, dans la colonne [L] toutes les cellules qui contiennent un lien et de supprimer les liens (clic droit et clic Supprimer le lien hypertexte). Ensuite vous sélectionnez la cellule [L3] vous cliquez dans la barre des formule et vous validez avec [?] ou [ENTER].
Salutations.
Le Pingou
Bonjour,
Je ne suis pas certain, une possibilité est que des valeurs ont été modifiées dans la colonne [F--Fournisseur] car ce paramètre fait partie du lien... !
Je ne suis pas certain, une possibilité est que des valeurs ont été modifiées dans la colonne [F--Fournisseur] car ce paramètre fait partie du lien... !
Bonjour,
Dans le message précédent je vous ai répondu par rapport à la faute probable qui empêche les liens de fonctionner correctement.
Concernant : Savez-vous pourquoi il y a des liens parasites sur les autres onglets ?
Si vous parlez de la cellule [L3] de la feuille [Livraisons contrôlées], il ne s'agit pas d'un lien hypertexte mais simplement d'un nombre souligné et écriture en bleu.
Dans le message précédent je vous ai répondu par rapport à la faute probable qui empêche les liens de fonctionner correctement.
Concernant : Savez-vous pourquoi il y a des liens parasites sur les autres onglets ?
Si vous parlez de la cellule [L3] de la feuille [Livraisons contrôlées], il ne s'agit pas d'un lien hypertexte mais simplement d'un nombre souligné et écriture en bleu.
Bonjour,
alors là je ne comprends plus trop ^^
ce matin j'ai ouvert le fichier pour supprimer les liens et valider chaque cellule pour repartir à 0.
et en cliquant sur une des références pof l'explorer s'ouvre
et c'est le cas pour toutes les cellules. donc tout refonctionne normalement sans avoir rien fait.
merci pour votre aide
Bonne journée
alors là je ne comprends plus trop ^^
ce matin j'ai ouvert le fichier pour supprimer les liens et valider chaque cellule pour repartir à 0.
et en cliquant sur une des références pof l'explorer s'ouvre
et c'est le cas pour toutes les cellules. donc tout refonctionne normalement sans avoir rien fait.
merci pour votre aide
Bonne journée
J'ai mis en place cette macro début 2013.
Par contre ça me fait penser qu'après avoir enregistré ma version 2014. J'ai refermé le fichier et en l'ouvrant Excel m'a indiqué que des liaisons existaient. Comme la macro était faite pour être indépendante j'ai demandé à ce que ces liaisons soient cassées car ça n'avait pas de sens à mes yeux