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: mise à jour données de feuilles "Invalid qualifier" [XL-2007]


Sujet :

Macros et VBA Excel

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 3
    Par défaut VBA: mise à jour données de feuilles "Invalid qualifier"
    Bonjour tout le monde!

    Tout d'abord merci d'avance de votre lecture et de votre participation.
    Je me suis mis il y a quelque semaines au VBA (c'est juste fantastique!) pour excel et après des lectures actives, je suis complétement bloqué et j'ai du rater quelque chose et je viens vous demander de l'aide

    Je lance les explications, accrochez vous!

    Le principe:
    Dans un fichier excel, j'ai une liste de devis dans une feuille. Dans chacune des autres feuilles, j'ai des projets (un projet par feuille). L'objectif est que chaque devis aille dans le projet qui le concerne avec certaines infos pour ainsi avoir une vue budgétaire du projet.

    Dans les faits (vous pouvez regarder sur le fichier joint. Pour information, j'ai volontairement supprimé des informations, j'espère que vous comprendrez ^^).

    Donc, j'ai un onglet "Quotes". Dans cet onglet, je copie colle une base de donnée externe. J'ai notamment le numéro de devis, de projet, le statut, le coût, le type de devis et l'onglet auquel il doit aller.

    Dans les autres onglets (projets), j'ai un tableau "Revenue" avec planifié, projeté et actuelle.

    Explication de mon VBA:
    On va sur l'onglet "quotes", on va à une ligne (on a une boucle pour aller de ligne en ligne). On prend le numéro de devis, le cout, le nom de l'onglet, le type de devis et suivant le statut, on aura quotesstatus qui sera "Y" ou "N" (Yes ou No).

    Ensuite, on se référe au nom de l'onglet pour y aller et là attention, si on a un type de devis "ini" (= initial), on va sur la zone "Planned" sinon, on va sur la zone "Projected". Là, on check si le numéro de devis existe. S'il existe, on met à jour les infos (cout et quote status) sinon on ajoute une ligne et on rajoute le devis avec les infos.

    Et à la fin, on revient sur l'onglet devis et on passe à la ligne suivante donc.

    Si jamais, le nom de l'onglet est vide dans la feuille "Quotes", on passe au devis suivant.


    Voici pour information le code:

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    Sub quote_management()
     
    Dim i As Byte
    Dim Jdevis As Byte
    Dim Jprojet As Byte
    Dim Jstatus As Byte
    Dim Jvente As Byte
    Dim Jtype As Byte
    Dim Jonglet As Byte
    Dim Jupdate As Byte
    Dim quotenumber As Long
    Dim projectnumber As Integer
    Dim quotestatus As String
    Dim quotevente As Currency
    Dim quotetype As String
    Dim quoteonglet As String
    Dim quoteupdate As Date
     
    Sheets("Quotes").Activate
     
    Range("A2").Select
     
    i = 2
    Jdevis = 1
    Jprojet = 2
    Jstatus = 7
    Jvente = 9
    Jtype = 10
    Jonglet = 14
    Jupdate = 16
     
    While Not IsEmpty(ActiveCell) ' tant que la case est pas vide
     
    quotenumber = ActiveCell.Value
    projectnumber = Cells(i, 2).Value
    quotestatus = Cells(i, 7).Value
    quotevente = Cells(i, 9).Value
    quotetype = Cells(i, 10).Value
    quoteonglet = Cells(i, 14).Value
    quoteupdate = Cells(i, 16).Value
     
    If quotestatus = "Commande reçue" Or quotestatus = "Facturé" Then
    quotestatus = "Y"
    Else
    quotestatus = "N"
     
    End If
     
    If IsEmpty(Cells(i, 14)) Then ' si pas onglet où aller, on laisse tomber
     
    i = i + 1
     
    Cells(i, 1).Select
     
    Else
     
    Sheets(quoteonglet.Value).Activate
     
        If quotetype = "Initial" Then
     
        k = 1
            While Not ActiveCell.Value = "Planned"
     
            k = k + 1
     
         Cells(k, 1).Select
     
            Wend
     
            k = k + 1
                While Not IsEmpty(ActiveCell)
     
                If ActiveCell.Value = quotenumber Then
                ActiveCell.Offset(0, 1).Select
                ActiveCell.Value = quotestatus
                ActiveCell.Offset(0, 1).Select
                ActiveCell.Value = quotevente
     
                k = k + 1
     
                Cells(k, 1).Select
     
                Else
     
                k = k + 1
     
                Cells(k, 1).Select
     
                End If
     
                Wend
     
     
     
            Rows(k).Insert
     
            Cells(k, 1).Select
            ActiveCell.Value = quotenumber
            ActiveCell.Offset(0, 1).Select
            ActiveCell.Value = quotestatus
            ActiveCell.Offset(0, 1).Select
            ActiveCell.Value = quotevente
     
         ElseIf quotetype = "Comp" Then
     
         k = 1
            While Not ActiveCell.Value = "Projected"
     
            k = k + 1
     
         Cells(k, 1).Select
     
            Wend
     
            k = k + 1
            While Not IsEmpty(ActiveCell)
     
            If ActiveCell.Value = quotenumber Then
            ActiveCell.Offset(0, 1).Select
            ActiveCell.Value = quotestatus
            ActiveCell.Offset(0, 1).Select
            ActiveCell.Value = quotevente
     
            k = k + 1
     
            Cells(k, 1).Select
     
            Else
     
            k = k + 1
     
            Cells(k, 1).Select
     
            End If
     
            Wend
     
            Rows(k).Insert
     
            Cells(k, 1).Select
            ActiveCell.Value = quotenumber
            ActiveCell.Offset(0, 1).Select
            ActiveCell.Value = quotestatus
            ActiveCell.Offset(0, 1).Select
            ActiveCell.Value = quotevente
     
     
         Else
     
         MsgBox "Le devis " & quotenumber & " a ni comp ni initial"
     
        End If
     
        Sheets("Quotes").Activate
        i = i + 1
     
     End If
     
    Wend
     
     
    End Sub
    J'ai toujours un bug et là, je suis coincé, je dois m'enmeler les pinceaux. J'ai actuellement le message "Invalid qualifier" qui apparait et le debugger m'indique "quoteonglet" dans la la zone :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Cells(i, 1).Select
     
    Else
     
    Sheets(quoteonglet.Value).Activate
     
        If quotetype = "Initial" Then
     
        k = 1
    Je vous remercie d'avance de votre aide et de ce que vous allez m'apprendre!
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [XL-2007] [VBA] Mise à jour d'une feuille à partir d'une autre
    Par salim2103 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 23/03/2011, 17h33
  2. [XL-2002] Mise à jour donnée cellue VBA Excel
    Par kdestine dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/11/2010, 14h00
  3. [AC-2000] Mise à jour sous formulaire feuille de données
    Par SLEGRAND76 dans le forum IHM
    Réponses: 6
    Dernier message: 29/09/2009, 20h06
  4. [VBA-E] Mise à jour données externes
    Par Sebastien_INR59 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/06/2006, 17h11

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