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 :

VBA: Ajout un "range" automatiquement dans plusieurs fichiers


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6
    Par défaut VBA: Ajout un "range" automatiquement dans plusieurs fichiers
    Bonjour à tous,

    Je vous demande votre aide dans la mesure ou je ne possède aucune connaissance en VBA et il m'a été donné une tache des plus ennuyante qui consiste à créer des "range" avec un nom (je ne connais pas la traduction en français ...) et ce dans une centaine de fichiers ...

    Je sais qu'il est possible de le faire en VBA et possède toutes les informations nécessaires. Je vais essayer de décrire aussi bien que possible la tache à automatiser.

    Je possède un workbook contenant une sheet dans lequel se trouve l'emplacement de tous les fichiers que je dois ouvrir et dans lesquels je dois ajouter un range nommé "nav" et qui se trouve dans la cellule C19 pour chacun de ces fichiers.
    Les noms des fichiers repertoriés de la façon suivante:

    une cellule contient le chemin et la cellule suivante contient le nom du fichier.

    J'ai la logique à suivre en tête mais ne connais ps du tout la syntaxe et je sais que cela me prendrait des heures de recherches alors que cela doit être fait pour cet après midi ... et je préfère éviter de faire cela manuellement car cela me rendrait dingue de refaire cette opération pour une centaine de fichiers :-)

    boucle parcourant la sheet contenant tous les noms de fichiers à ouvrir
    construire la chaine de caractère sur base de "chemin"+"nomdefichier"
    ouvrir fichier correspondant à la chaine de caractère construite précédemment
    ajouter un range nommé nav en position C19
    fermer le fichier
    stopper la boucle lorsqu'il n'y a plus de nom de fichiers



    Merci d'avance pour votre aide !

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Salut, pour t'aider il manque quelques éléments comme
    -le nom de la feuille ou se trouve les chemins et les noms de fichier
    -les colonnes ou se trouvent les chemins etc..;
    -le numéro de la première ligne ou commence les données
    Et enfin le nom de la feuille ou l'on doit nommer la cellule C19 "nav".

    a ce sujet il faut inscrire "nav" dans la cellule ou nommer la cellule "nav" ?

    bref sans ces éléments voici un code que tu adapteras a tes besoins. N'ayant pas les renseignements cités plus haut, je pars du principe que les chemins sont dans la colonne A et commence à la ligne 1 et que les noms de fichiers sont dans la colonne B ligne 1 de la feuille 1. J'ouvre le classeur et nomme la cellule C19 de la feuille 1 du nouveau classeur , "nav" et le referme en sauvegardant le changement, ensuite je passe au 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
    Sub test()
    Dim chemin As String, nomfichier As String
     
    Application.screenUpdating = False 
     
    For i = 1 To Range("A65000").End(xlUp).row
     
      'Je met le chemin dans une variable
      chemin = Sheets("Feuil1").Range("A" & i)
     
      'Je met le nom du fichier dans une variable
      nomfichier = Sheets("Feuil1").Range("B" & i)
     
    'j'ouvre le classeur
    Workbooks.Open Filename:=chemin & nomfichier
     
    'Je nomme la cellule C19 de la feuille 1 : "nav"
    Sheets("Feuil1").Range("C19").Name = "nav"
     
    'je ferme le classeur en sauvegardant les changements
    Workbooks(nomfichier).Close SaveChanges:=True
     
    'je passe au prochain classeur
    Next i
     
    Application.screenUpdating = True
     
    End Sub
    Tiens moi au courant

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6
    Par défaut
    rvtoulon

    Pour répondre à tes questions:

    -le nom de la feuille ou se trouve les chemins et les noms de fichier

    --> tConfigDeal

    -les colonnes ou se trouvent les chemins etc..;

    -->C et D (respectivement: chemin et nomdefichier)

    -le numéro de la première ligne ou commence les données

    première ligne = 3
    dernière ligne = ligne blanche (c'est à dire sans aucune donnée)

    Et enfin le nom de la feuille ou l'on doit nommer la cellule C19 "nav".

    a ce sujet il faut inscrire "nav" dans la cellule ou nommer la cellule "nav" ?

    --> effectivement, le but est de nommer la cellule nav


    MErci beaucoup d'avance,

  4. #4
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Slt,
    En appliquant tes précisions au code que je t'ai mis :
    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
    Sub Nommer_Cellule()
    Dim chemin As String, nomfichier As String
     
    Application.ScreenUpdating = False
     
    For i = 3 To Sheets("tConfigDeal").Range("C65000").End(xlUp).Row
     
      'Je met le chemin dans une variable
      chemin = Sheets("tConfigDeal").Range("C" & i)
     
      'Je met le nom du fichier dans une variable
      nomfichier = Sheets("tConfigDeal").Range("D" & i)
     
    'j'ouvre le classeur
    Workbooks.Open Filename:=chemin & nomfichier
     
    'Je nomme la cellule C19 de la feuille 1 : "nav"
    'Ici Remplace Feuil 1 Par le nom de la feuille de la cellule C19
    Sheets("Feuil1").Range("C19").Name = "nav"
     
    'je ferme le classeur en sauvegardant les changements
    Workbooks(nomfichier).Close SaveChanges:=True
     
    'je passe au prochain classeur
    Next i
     
    Application.ScreenUpdating = True
     
    End Sub
    il me manquait le nom de la feuille ou se trouve la cellule C19, je t'indique en commentaire dans le code ou mettre ce nom.

    dans l'éditeur VBA (ALT+F11) ajoute un module standard et colle cette macro fais le changement du nom de la feuille de la cellule C19 et appuie sur F5 pour lancer la macro

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6
    Par défaut
    Super !

    J'ai testé et cela marche à merveille :-)

    Encore une dernière chose et j'aurai fini de t'ennuyer ...

    J'ai placé un bouton sur ma feuille Excel et me suis arrangé pour faire en sorte que je puisse exécuter la Macro lorsque je clique dessus.

    La seule chose pour automatiser à 100% le processus est la suivante:

    Au moment de l'exécution de la macro, je reçois deux messages:

    1) "this workbook contains one or more links that cannot be updated", en gros il me demande soit d'éditer les liens, soit de continuer --> je choisis donc l'option qui consiste à continuer en cliquant sur le bouton "continue"

    2) je reçois un message du "compatibility checker" d'excel me demandant également de cliquer sur "continue" pour valider.

    As tu une astuce permettant d'éviter ces messages et continuer sans intervention humaine ??

    Merci d'avance,

  6. #6
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Slt,
    Peux-être en ajoutant cette ligne en début de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Application.DisplayAlerts = False '<=== Ligne a ajouter
     
    Application.ScreenUpdating = False
    et cette ligne en fin de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Application.ScreenUpdating = True
     
    Application.DisplayAlerts = True '<=== Ligne a ajouter

Discussions similaires

  1. [XL-2000] [VBA] Ajout d'une Zone de texte dans un graphique
    Par popsmelove dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/04/2009, 18h08
  2. Réponses: 9
    Dernier message: 10/05/2007, 10h56

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