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 :

Bug de programmation (DEBUTANT)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2018
    Messages : 1
    Par défaut Bug de programmation (DEBUTANT)
    Bonjour à tous,,

    Je ne connais pas du tout le VBA et j'ai un programme à faire. J'ai donc suivie des tuto, les aides sur les forums etn j'en suis arrivé au programme ci-dessous.
    Le but de se programme est d'ouvrir un tableau A dans lequel je vais chercher un chiffre renseigné dans une cellule. Ce chiffre est le numéro de la ligne qui me sert de reference pour aller chercher une valeur dans une cellule d'un tableau B. Une fois cette nouvelle valeur obtenu je retourne la mettre dans une autre cellule du tableau A (même ligne mais colonne différente que la première recherche d'info dans le tableau A).

    Mes 2 tableaux sont dans des fichiers différents alors j'ai essayé de récupéré le nom du fichier et de la feuille du tableau A avant d'ouvrir le second fichier par la macro Excel (nommé MyFile dans mon programme).
    Malheureusement la première ligne de ma boucle for, Workbooks... bug (peut-être que le reste buguera par la suite).

    Auriez-vous une explication s'il vous plait? Une base de la programmation que je n'ai pas compris?

    Merci d'avance pour vos réponses.

    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
    Public Sub Transferdonnees()
     
    Dim LineRef As Integer
    Dim ColumnRef As Integer
    Dim TableauA As String
    Dim Tableau As String
     
    Dim CellRef As String
    Dim Weight As Double
     
    Dim MyFile As String
     
     
    TableauA = ActiveWorkbook.Name
    Tableau = ActiveSheet.Name
     
    MyFile = Application.GetOpenFilename(, , "Open a Bookmark A2mac1", , False)
     
    Workbooks.Open (MyFile)
     
    LineRef = 15: ColumnRef = 21
     
    For I = 0 To 368
        Workbooks(TableauA).Open
        Sheets(Tableau).Select
        CellRef = Cells(LineRef, ColumnRef).Value 'Lire la cellule de la feuille tableur(LineRef,colonne u)'
        Workbooks.Open (MyFile)
        Weight = Cells(CellRef, 13).Value 'Lire la masse dans le bookmark'
        Workbooks(Tableau).Activate
        Cells(LineRef, 6) = Weight 'Attribuer la masse au tableau'
     
        LineRef = LineRef + 1
    Next
     
     
    End Sub

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par LStephen Voir le message
    Malheureusement la première ligne de ma boucle for, Workbooks... bug (peut-être que le reste buguera par la suite).

    Auriez-vous une explication s'il vous plait? Une base de la programmation que je n'ai pas compris?
    Parce que tu confonds Open et Activate : on n'ouvre pas un classeur qui est déjà ouvert.
    https://msdn.microsoft.com/fr-fr/vba...te-event-excel
    Cela dit, à mon avis, même les Activate seraient inutiles dans ton code.

    De plus, l'objet Workbook n'a pas de méthode Open. C'est la collection Workbooks qui a une méthode Open.

    Comme ça c'est mieux :
    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
    Public Sub Transferdonnees()
        Dim LineRef As Long
        Dim WSDest As Worksheet
        Dim MyFile As String
     
        Set WSDest = ActiveSheet
     
        MyFile = Application.GetOpenFilename(, , "Open a Bookmark A2mac1", , False)
        Workbooks.Open (MyFile)
     
        For LineRef = 15 To 383
            WSDest.Cells(LineRef, 6) = Cells(WSDest.Cells(LineRef, 21).Value, 13).Value  ' Lire la masse dans le bookmark'
        Next LineRef
     
    End Sub
    C'est du code tapé à l'arrache directement sur le forum. Il se peut donc qu'il y ait un peu de débugage à faire.
    D'autant plus de je n'ai pas trop compris ton principe d'aller chercher le n° de ligne source dans une cellule.

    Il serait plus propre aussi d'ajouter un petit test pour vérifié qu'un fichier a bien été sélectionné par le GetOpenFilename.

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/03/2012, 11h32
  2. probleme de programmation (debutant)
    Par oudin77 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/05/2008, 12h45
  3. bug dans programme d'extraction de données d'une page web
    Par youpimevla dans le forum Web & réseau
    Réponses: 11
    Dernier message: 31/08/2006, 11h02
  4. bug du programme apres utilisation de dialog
    Par avogadro dans le forum Delphi
    Réponses: 13
    Dernier message: 07/06/2006, 16h33
  5. aide programme debutant
    Par mator dans le forum C
    Réponses: 5
    Dernier message: 20/04/2006, 20h30

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