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 :

Activer le fichier créé


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 134
    Par défaut Activer le fichier créé
    Bijour, tous le monde alros voila je suis une mer** en VBA toutefois j'arrive a comprendre lorsque que je le lis (uno punco) mais euh..j'ai essayer de me construire une macro sous excel a l'aide de plusieurs macro.....le probleme et ya une ligne ou y bloque..j'ai noté lendroit ou ca blok ds le code...(vs: '------c ici que ca merdouille-------)
    comme jarrive a le lire pa a lecrire..j'arrive pas a lui dire d'executer la suite de la macro sur la feuille1 du nouveau fichier créé...j'ai essayé

    windows (nomFichierSortie) . activate
    wkbnews. open nomfichiersortie
    activate(nomfichiersortie)
    et jai des erreurs 1004' ou 234' ou 9..enfin bref ca marche pas

    voila je pense c que pas trop compliqué et meme tout bete mais je dois pas en etre loin



    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
    Private Sub cmdExploiter_Click()
     Dim nomFichiertraite As String
     Dim nomFichierSortie As String
     Dim wkbDonnées As Workbook
     Dim wkbNew As Workbook
     Dim wshDonnées As Worksheet
     Dim wshSortie As Worksheet
    Dim NbrLigneFichierX As Integer
    Dim i As Long
     
     
       ChDir (ThisWorkbook.Path)
      nomFichiertraite = Application.GetOpenFilename("Classeur Microsoft Excel (*.xls),*.xls", 1, "Sélectionner le fichier à contenant les données")
     
      If nomFichiertraite = "Faux" Then Exit Sub
     
      Workbooks.Open nomFichiertraite
      Set wkbNew = Workbooks(Workbooks.Count)
        nomFichierSortie = Application.GetSaveAsFilename("", "Classeur MiscrosoftExcel (*.xls), *.xls", 1, _
                                 "FICHIER DE SORTIE POUR DATABASE:taper le nom du fichier de sortie")
     
    If nomFichierSortie = "Faux" Then Exit Sub
     
      wkbNew.SaveAs (nomFichierSortie)
     
     
    ' convercolonne Macro
    ' Macro pour separer la colonne trial et lieu attention celle ci
    ' -----------------"C ICI que ca merdouill"----------------------
     
          Columns("O:O").Select
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Columns("N:N").Select
           Selection.TextToColumns Destination:=Range("N1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
            Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
            :=Array(Array(1, 2), Array(2, 1)), TrailingMinusNumbers:=True
        Range("O1").Select
        ActiveCell.FormulaR1C1 = "LIEU"
    PS: tant que ya qqlun pour maider pouvez me dire au lieu de demander de selectionner la colonne O:O comment je pe lui demander de selectionner la colonne avec l'entete "genotype" merki merki merki!!!

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Par défaut
    GetOpenFilename et GetSaveAsFilename renvoient un type Variant et non String. Donc déclares tes variable de ce type. Et dans ton code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        If nomFichiertraite = False Then Exit Sub
     
        ...
     
        If nomFichieSortie = False Then Exit Sub
    ------------------------------

    doogybreton:

    ... au lieu de demander de selectionner la colonne O:O comment je pe lui demander de selectionner la colonne avec l'entete "genotype"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Dim rngColonneGenotype As Range
     
        ' En assumant que l'entête de colonne se trouve dans la première ligne de la feuille...
        Set rngColonneGenotype = ActiveSheet.Rows(1).Find(What:="genotype")
        If Not rngColonneGenotype Is Nothing Then
            Set rngColonneGenotype = rngColonneGenotype.EntireColumn
            ' à partir d'ici, rngColonneGenotype représente toute la colonne...
        End If

  3. #3
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 134
    Par défaut
    ok merci pour la 2eme reponse jai compris...
    mais pas pour la 1ere ^^ jai pa trop compris ..

    si je lance la premiere porcedure a part douverture du fichier et d'enregristrement tout ce passe impeccable!!
    mais par contre c quand je lui dit de selectionner colonne pour la prochiane etape. la il y a message d'erreur ..je pense il faut lui dire de fermer le vieux fichier et travailler la suite sur le nouveau ...donc je met quoi active???

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Par défaut
    La première explication n'est pas là pour rien...

    Quand tu ouvres les fichiers, tu crois qu'ils sont ouverts puisque la macro "n'accroche pas" à cet endroit là. C'est parce que nomFichiertraite et nomFichierSortie ne seront jamais = à "Faux". Ils seront = à False si le nom n'a pas été choisi... False n'est pas un String mais un Boolean. D'où la nécessité de définir tes variables de noms de fichiers en Variant, pour accomoder ces deux types de valeurs. Sinon, le "Then Exit Sub" ne se produira jamais, même si l'utilisateur ne choisit pas de fichier.

    La propriété Columns ne peux pas prendre de littéral comme indice. Seulement un entier (Long). Ainsi, Columns("O:O") ne se peut pas en VBA-Excel. Donc, erreur...

  5. #5
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 134
    Par défaut
    jai changé les string en variant et ca marche encore moins bien ...la premiere etape ne marche plus du tout..alors qu'avant elle marché impec en string (seul les esprits impure, par l'évocation de cette derniere phrase, auront un doux sourir de leur coins de levres).. et le column (O:O) c'est excel qui me la fait par la macro enregistrement, donc euh je suis perdu!! je rappel que je suis un illétré du VBA...donc kezako???

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Citation Envoyé par Singular Voir le message
    Ainsi, Columns("O:O") ne se peut pas en VBA-Excel. Donc, erreur...
    Salut
    heuu, je suis pas d'accord avec toi sur ce point la
    Ca fonctionne tres bien, et DoogyBreton a une macro sur son PC qui peu le confirmer, et oui j'ai des pouvoirs de divination ... Harry Potter is in me

    @DoogyBreton: Ca te permet de faire reference a une(ou plusieur) colonne entiere pas juste a une cellule.
    [Edit]
    Tiens voila ta macro un peu arrangé, j'ai pas fais grand chose juste remis un peu d'ordre
    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
    Private Sub cmdExploiter_Click()
     Dim nomFichiertraite As Variant
     Dim nomFichierSortie As Variant
     Dim wkbDonnées As Workbook
     Dim wkbNew As Workbook
     Dim wshDonnées As Worksheet
     Dim wshSortie As Worksheet
     Dim NbrLigneFichierX As Integer
     Dim i As Long
     Dim rngColonneGenotype As Range
     
     
        ChDir (ThisWorkbook.Path)
        nomFichiertraite = Application.GetOpenFilename("Classeur Microsoft Excel (*.xls),*.xls", 1, "Sélectionner le fichier à contenant les données")
     
        If nomFichiertraite = False Then Exit Sub
     
        Workbooks.Open nomFichiertraite
        Set wkbNew = Workbooks(Workbooks.Count)
        nomFichierSortie = Application.GetSaveAsFilename("", "Classeur MiscrosoftExcel (*.xls), *.xls", 1, _
                                 "FICHIER DE SORTIE POUR DATABASE:taper le nom du fichier de sortie")
     
        If nomFichierSortie = False Then Exit Sub
        wkbNew.SaveAs (nomFichierSortie)
     
        wkbNew.Activate 'meme pas sur que ce soit utile
     
    ' convercolonne Macro
    ' Macro pour separer la colonne trial et lieu attention celle ci
    ' -----------------"C ICI que ca merdouill"----------------------
     
        ' /////// Le code de Singular ///////
        ' En assumant que l'entête de colonne se trouve dans la première ligne de la feuille...
        Set rngColonneGenotype = ActiveSheet.Rows(1).Find(What:="genotype")
        If Not rngColonneGenotype Is Nothing Then
            Set rngColonneGenotype = rngColonneGenotype.EntireColumn
            ' à partir d'ici, rngColonneGenotype représente toute la colonne...
        End If
     
        rngColonneGenotype.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        rngColonneGenotype.Cells(1, 1).Offset(0, -1).FormulaR1C1 = "LIEU"
        Columns("N:N").TextToColumns Destination:=Range("N1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
            Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
            :=Array(Array(1, 2), Array(2, 1)), TrailingMinusNumbers:=True
    End Sub
    Si tu veux des explications sur le code esite pas a demander. Et pour le coup j'avoue que j'ai pas compris ce que tu voulais faire avec TextToColumns.
    Cette ligne te posera peut etre probleme a la comprehension
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     rngColonneGenotype.Cells(1, 1).Offset(0, -1).FormulaR1C1 = "LIEU"
    En fait c'est tout simple
    rngColonneGenotype represente une colonne complete, donc une plage de cellule, dans cette plage de cellule je pointe sur la 1ere cellule Cells(1,1), puis je decale mon pointage d'une collonne vers l'arriere Offset(0, -1)
    [/Edit]
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Par défaut
    Désolé, je n'avais pas testé le Columns("O:O"); je ne me suis fié qu'à l'aide en ligne sur la propriété...

    Pour ce qui est des Variant qui ne fonctionnent pas, ça c'est du tout nouveau car je n'invente rien en disant que GetOpenFilename fonctionne de cette façon.

    Extrait de l'aide sur Application.GetOpenFilename:

    Notes

    Cette méthode renvoie le nom du fichier sélectionné ou le nom tapé par l'utilisateur. Le nom renvoyé est susceptible d'inclure une spécification de chemin. Si MultiSelect a la valeur True, la valeur renvoyée est un tableau des noms de fichiers sélectionnés (même si un seul nom de fichier est sélectionné). Renvoie la valeur False si l'utilisateur annule la boîte de dialogue.
    Cette méthode est susceptible de modifier le lecteur ou le dossier en cours.
    Si cette méthode peut renvoyer soit un String, un Boolean (False, en l'occurence) ou un tableau de Strings, c'est très certainement un Variant! Recevoir le renvoi de cette fonction dans tout autre type de variable est une commande expresse à la manufacture de problèmes...

    As-tu fait un suivi en débogage pas-à-pas avec des espions pour savoir quelles valeurs tu as à toutes les étapes?

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

Discussions similaires

  1. Activation d’un fichier avec le nom incomplet
    Par volubiliss dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/03/2011, 09h32
  2. [XL-2003] Comment afficherun userform en activant un fichier Excel
    Par MichaSarah dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/04/2010, 12h32
  3. Activer un fichier d'apres le debut du nom
    Par Benjamin.Dohogne dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/12/2009, 13h13
  4. [E-02]Activer un fichier
    Par lucarno dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/10/2008, 19h50
  5. activation de fichiers avec une variable
    Par frolland46 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/06/2008, 22h32

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