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 :

Demande correctif code vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    secrétaire
    Inscrit en
    Février 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : secrétaire

    Informations forums :
    Inscription : Février 2024
    Messages : 3
    Par défaut Demande correctif code vba
    Bonjour,

    Le code vba est nouveau pour moi.
    J'ai déjà réussi à créer des dossiers dans un répertoire avec les données inscrites dans la colonne c de mon tableau et de créer automatiquement le lien hypertexte ad hoc.
    maintenant je souhaiterais qu'à chaque modifications de valeur dans la colonne c, le dossier créé change aussi de nom et que le lien hypertexte soit toujours là.

    J'ai ce code, mais visiblement il y a un problème : est-ce que quelqu'un peut m'aider ?

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    Dim cell As Range
    Dim folderPath As String
    Dim hyperlinkAddress As String

    ' Spécifiez la plage de la colonne où se trouvent les valeurs
    Set rng = Range("C2:C")

    ' Spécifiez le chemin du répertoire où les dossiers sont créés
    folderPath = "C:\Users\sabine.luesma\Desktop\test dpec\"

    ' Vérifiez si la modification a été apportée dans la plage spécifiée
    If Not Intersect(Target, rng) Is Nothing Then
    ' Parcourez chaque cellule modifiée
    For Each cell In Intersect(Target, rng)
    ' Vérifiez si la cellule n'est pas vide
    If cell.Value <> "" Then
    ' Mettez à jour le nom du dossier avec la nouvelle valeur de la cellule
    Name folderPath & cell.Value As folderPath & cell.Value2
    ' Mettez à jour l'adresse du lien hypertexte avec le nouveau nom de dossier
    hyperlinkAddress = folderPath & cell.Value2 & "\"
    cell.Hyperlinks.Add Anchor:=cell, Address:=hyperlinkAddress, TextToDisplay:=cell.Value
    End If
    Next cell
    End If
    End Sub

    Le problème se situerait ici : Name folderPath & cell.Value As folderPath & cell.Value2

    Merci

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 161
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai ce code, mais visiblement il y a un problème : est-ce que quelqu'un peut m'aider ?
    Soyez plus précis. Quel problème, une erreur, le résultat attendu ne répond pas à vos attentes ?

    Je voudrais tout de même vous préciser que la ligne Set rng = Range("C2:C") renvoie une erreur
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 505
    Par défaut
    Salut,

    J'ajouterai que l'instruction Name ne créer par de dossier ou fichier, mais renomme un fichier ou dossier existant.

    Je te conseille de faire moderne, en passant par la librairie FSO, ca donnera plus de sens à ton code.

  4. #4
    Candidat au Club
    Femme Profil pro
    secrétaire
    Inscrit en
    Février 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : secrétaire

    Informations forums :
    Inscription : Février 2024
    Messages : 3
    Par défaut FSO
    Bonjour,

    Je suis vraiment à mes début en ce qui concerne le code vba.
    En effet les dossiers ont déjà été créé précédemment avec un autre code. Je souhaiterais que chaque fois qu'on ajoute ou qu'on modifie une donnée dans cette colonne "ou le dossier se crée s'il n'existe pas ou le nom du dossier déjà existant se modifie"

    Qu'est-ce que la librairie FSO ? je vais bien sûr aller chercher, mais je tenais à vous répondre.
    Merci

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 161
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour l'autre ligne qui pose problème, c'est juste quand j'essaie de lancer le code, un débogage se fait à cette ligne et je ne comprends pas comment régler le problème.
    Décidément, le mot précis ne vous parle pas.
    En général lorsque le VBA est en erreur la ligne est surlignée en jaune et renvoie un numéro d'erreur ainsi qu'un texte en général suffisamment explicite.

    Donc merci de nous dire quelle ligne est en erreur, et quelle erreur est renvoyée (N° + texte) parce-que vous utilisez le conditionnel dans votre première demande
    Le problème se situerait ici : Name folderPath & cell.Value As folderPath & cell.Value2
    je me demande d'ailleurs ce que vient faire le mot clé As dans cette ligne de code.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut, j'ai légèrement modifié ta macro. Si tu veux renommer un dossier, c'est normal que ta ligne Name folderpath provoque une erreur puisqu'il n'existe pas encore. Teste ceci:

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    Dim cell As Range
    Dim folderPath As String
    Dim hyperlinkAddress As String
    Dim oldName As String
     
    ' Spécifiez la plage de la colonne où se trouvent les valeurs
    Set rng = Range("C2:C" & Cells(Rows.Count, "C").End(xlUp).Row)
     
    ' Spécifiez le chemin du répertoire où les dossiers sont créés
    folderPath = "C:\Users\sabine.luesma\Desktop\test dpec\"
     
    ' Vérifiez si la modification a été apportée dans la plage spécifiée
    If Not Intersect(Target, rng) Is Nothing Then
        ' Parcourez chaque cellule modifiée
        For Each cell In Intersect(Target, rng)
            ' Vérifiez si la cellule n'est pas vide
            If cell.Value <> "" Then
                ' Mettez à jour le nom du dossier avec la nouvelle valeur de la cellule
                oldName = cell.Value ' Vous devez définir l'ancien nom avant de le changer
                Name folderPath & oldName As folderPath & cell.Value
                ' Mettez à jour l'adresse du lien hypertexte avec le nouveau nom de dossier
                hyperlinkAddress = folderPath & cell.Value & "\"
                cell.Hyperlinks.Add Anchor:=cell, Address:=hyperlinkAddress, TextToDisplay:=cell.Value
            End If
        Next cell
    End If
    End Sub

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 505

  8. #8
    Candidat au Club
    Femme Profil pro
    secrétaire
    Inscrit en
    Février 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : secrétaire

    Informations forums :
    Inscription : Février 2024
    Messages : 3
    Par défaut Demande d'explication et erreur
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    Soyez plus précis. Quel problème, une erreur, le résultat attendu ne répond pas à vos attentes ?

    Je voudrais tout de même vous préciser que la ligne Set rng = Range("C2:C") renvoie une erreur
    Bonjour,

    Je n'avais pas repéré pour Range, merci : je suppose que je dois noter la dernière case de la colonne de mon tableau (C2:C20) par exemple.
    Pour l'autre ligne qui pose problème, c'est juste quand j'essaie de lancer le code, un débogage se fait à cette ligne et je ne comprends pas comment régler le problème.
    J'essaie de comprendre le vba mais je n'en suis encore qu'au tout début. Malheureusement j'ai besoin de faire ce travail assez rapidement.
    Si vous pouviez m'expliquer en quoi pourrait consister mon erreur, j'aurais une direction pour chercher.
    Merci.

Discussions similaires

  1. demande du code VBA pour le bouton modifier
    Par yassine0 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/10/2018, 20h22
  2. DEMANDE D'AIDE code vba
    Par amiinaa dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/12/2016, 18h16
  3. [XL-2003] Demande code vba
    Par vieuxmonsieur dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/02/2012, 16h02
  4. Réponses: 37
    Dernier message: 15/11/2011, 11h41

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