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 :

Remplissage automatique à partir d'une source [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 17
    Par défaut Remplissage automatique à partir d'une source
    Bonjour à tous,

    J'ai écrit une petite macro toute simple qui me permet de remplir automatiquement un tableau de dépenses à partir de diverses sources, et notamment à partir d'un bilan comptable ("Balance Sheet" dans mon fichier). Cette macro fonctionnait très bien jusqu'à aujourd'hui (je la fais tourner chaque mois de l'année environ), mais elle me renvoie maintenant un message d'erreur de type "Mismatch".

    Je me permets de m'adresser à vous car je ne vois vraiment pas d'où peut provenir l'erreur, sachant que mon code marchait très bien jusqu'à aujourd'hui.

    Vous trouverez mon fichier ci-joint, je pense que c'est de loin le plus rapide pour déterminer d'où provient l'erreur. J'ai surligné en jaune la partie que j'ai isolée comme à l'origine de l'erreur, et ai supprimé le reste dans un souci d'anonymat.


    Filling Error.xlsm


    Je vous mets tout de même le code ci-après, à toute fin utile :

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Sub Actual_Filling_in_Actual_vs_Budget2()
     
     
    Dim WS1 As Worksheet, cell As Range, Cell1 As Range, Cell2 As Range
    Dim NLign As Long, total As Double
    Dim Actual_R As Range, Expense_Cat As Range
     
     
        Set WS1 = Worksheets("Actual vs Budget")
        'WS1 correspond à la Feuille Actual vs Budget, qui comprend le tableau que je cherche à remplir de façon automatique
     
        WS1.Activate
        For Each cell In WS1.Rows(1).Cells
     
            If cell.Value = Worksheets("Intro").Range("B7").Value Then 
            cell.Cells.EntireColumn.Offset(0, 1).Select
           'Il s'agit là d'un test me permettant de selectionner la colonne que je cherche à remplir, c'est-à-dire la colonne située juste à droite de la colonne contenant en première ligne le même chiffre que dans l'onglet Intro dans la case donnant le mois de l'année
            End If
        Next
     
        Set Actual_R = Selection
        Set Expense_Cat = Worksheets("Actual vs Budget").Range("B1:B100")
        'la colonne B de ma Feuille Actual vs Budget est celle qui contient les intitulés des comptes que je cherche à remplir automatiquement
     
     
     
    For Each Cell1 In Expense_Cat
    total = 0
     
     
        If Cell1.Value = "Hardware" Then
        'Si le nom de l'intitulé est "Hardware" alors je conserve le numero de ligne dans une variable NLign
        NLign = Cell1.Row
            For Each Cell2 In Worksheets("Balance Sheet").Range("A1:A1000")
                If Cell2.Cells.Value = "         Total for Computers & Equipment" Then
                total = total + Cell2.Cells.Offset(0, 9).Value
          'Je parcours une à une les cellules de la colonne A (qui contient les intitulés comptables de mon Bilan), et si l'une d'entre elles s'intitule "         Total for Computers & Equipment" (j'ai fait un copié/collé ici pour m'assurer que ce soit exactement le même intitulé, d'où les espaces au début), alors j'incremente ma variable "total" à partir du montant correspondant situé en colonne J (d'où le offset(0,9))
                End If
            Next Cell2
        Actual_R.Rows(NLign).Value = total
       'Je viens ensuite remplir mon tableau dans l'onglet Actual vs Budget avec ma variable total
        End If
     
     
        If Cell1.Value = "Office Furniture and Moving Expenses" Then
        NLign = Cell1.Row
            For Each Cell2 In Worksheets("Balance Sheet").Range("A1:A1000")
                If Cell2.Cells.Value = "         Total for Furniture, Fixtures & Equipment" Then
                total = total + Cell2.Cells.Offset(0, 9).Value
                End If
            Next Cell2
        Actual_R.Rows(NLign).Value = total
        End If
     
    Next Cell1
     
     
    End Sub

    Un grand merci d'avance à tous ceux qui prendront le temps de me lire, et peut-être de m'aider !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par clemanz Voir le message
    Bonjour,

    C'est votre cellule J81 de l'onglet "Balance Sheet" qui contient des caractères alphanumériques. Pour repérer cette cellule, j'ai inséré un Debug.Print dans votre code (Ctrl-G). Une fois effacé, plus de message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        If Cell1.Value = "Office Furniture and Moving Expenses" Then
        NLign = Cell1.Row
            For Each Cell2 In Worksheets("Balance Sheet").Range("A1:A1000")
                If Cell2.Cells.Value = "         Total for Furniture, Fixtures & Equipment" Then
                Debug.Print Cell2.Cells.Offset(0, 9).Address
                total = total + Cell2.Cells.Offset(0, 9).Value
                End If
            Next Cell2
        Actual_R.Rows(NLign).Value = total
        End If

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 17
    Par défaut
    Génial, ça marche parfaitement maintenant ! Très utile Debug.Print, je ne connaissais pas mais penserai à l'utiliser à l'avenir !

    Un grand merci !!

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/09/2018, 01h21
  2. Réponses: 5
    Dernier message: 18/03/2014, 09h41
  3. [JUnit] [junit 4] Tests automatique à partir d'une autre classe
    Par Periph dans le forum Tests et Performance
    Réponses: 9
    Dernier message: 28/03/2007, 09h46
  4. [FEDORA] Créer un package rpm à partir d'une source src.rpm
    Par Davesique dans le forum RedHat / CentOS / Fedora
    Réponses: 1
    Dernier message: 30/10/2006, 20h53
  5. [VB6] Remplissage ListBox à partir d'une liste
    Par speedster dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 06/06/2006, 13h35

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