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 :

Nourir une BD selon les données entrées sur une autre feuille


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Coordonnatrice
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Coordonnatrice
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Nourir une BD selon les données entrées sur une autre feuille
    Bonjour,
    Je cherche la solution la plus simple à mon problème et quoique certains cas ressemblent au mien, je ne trouve pas LA solution à mon problème.

    Le contexte est le suivant :
    Dans un premier onglet Sheets("Facture"), j'ai mon interface de facture.
    Mon deuxième onglet Sheets("BD Facture) est comme le nom le dit, là où je veux cumuler les données relatives aux différentes factures créées.

    J'ai une macro qui génère mon # automatique de chaque facture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub NO_Facture()
                                   'Va chercher le dernier numero de facture dans la BD Facture
                                   'Additionne 1 à ce numero de facture
                                   'Va inscrire ce numero dans l'onglet Facture dans la cellule appropriée
     
                           ProchaineCelluleVide = Sheets("BD Facture").Range("c1").End(xlDown).Value
                           ProchainNumero = ProchaineCelluleVide + 1
                           Sheets("Facture").Range("k2").Value = ProchainNumero
                            End Sub
    BREF,
    Maintenant, je veux que certaines cellules contenant de l'information importante (date, # client, montant facture, etc) soient «exportées» dans ma BD
    Là où mon nouveau # de facture va avoir été créé.

    J'avais utilisé la macro suivante, mais je réalise que si le # existe déjà, il va se doubler...

    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
    Sub RemplirChamp()
    'Permet d'aller chercher tous les nouveaux champs de la facture et de remplir la BD
    'En commençant par aller ajouter le # de facture utilisée (BD Facture : Colonne C)(Facture : k2)
    Sheets("BD Facture").Range("c1").End(xlDown).Select
    Selection.Offset(1, 0).Value = Sheets("Facture").Range("k2").Value
     
    'Cellule # document (BD Facture : Colonne A)(Facture : K3)
    Sheets("BD Facture").Range("a1").End(xlDown).Select
    Selection.Offset(1, 0).Value = Sheets("Facture").Range("k3").Value
     
     
    'Cellule # Client (BD Facture : Colonne B)(Facture : K1)
    Sheets("BD Facture").Range("b1").End(xlDown).Select
    Selection.Offset(1, 0).Value = Sheets("Facture").Range("k1").Value
     
    'Cellure Date (BD Facture : Colonne D)(Facture : G5)
    Sheets("BD Facture").Range("d1").End(xlDown).Select
    Selection.Offset(1, 0).Value = Sheets("Facture").Range("g5").Value
     
    ' Cellule Montant avant taxes (BD Facture : Colonne E)(Facture : H26 )
    Sheets("BD Facture").Range("e1").End(xlDown).Select
    Selection.Offset(1, 0).Value = Sheets("Facture").Range("h26").Value
     
    ' Cellule TPS (BD Facture : Colonne F)(Facture : H27)
    Sheets("BD Facture").Range("F1").End(xlDown).Select
    Selection.Offset(1, 0).Value = Sheets("Facture").Range("h27").Value
     
    ' Cellule TVQ (BD Facture : Colonne G)(Facture : H28)
    Sheets("BD Facture").Range("g1").End(xlDown).Select
    Selection.Offset(1, 0).Value = Sheets("Facture").Range("h28").Value
     
    ' Cellule Montant après taxes (BD Facture : Colonne H)(Facture : H29)
    Sheets("BD Facture").Range("h1").End(xlDown).Select
    Selection.Offset(1, 0).Value = Sheets("Facture").Range("h29").Value
     
    End Sub
    Je pense donc inscrire dans la dernière cellule libre le # de facture que j'ai créée dans la macro NOFacture et j'aimerai que ma macro trouve ce # puis inscrive dans les bonnes cellules les valeurs de la facture...

    Est-ce que je suis claire

    Un gros merci !!

  2. #2
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonsoir Carobibb, bonsoir le forum,

    Pas sûr d'avoir bien compris, je verrais les choses comme ça :

    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
    Private N As Long  'déclare la variable N (Numéro)
     
     
    Sub NO_Facture()
    N = Application.WorksheetFunction.Max(Sheets("BD Facture").Columns(3)) + 1 'définit le numéro N
    Sheets("Facture").Range("k2").Value = N 'place le numéro N danws la cellule K2 de l'onglet "Facture"
    End Sub
     
     
    Sub RemplirChamp()
    Dim F As Object 'déclare la variable F (onglet Facture)
    Dim B As Object 'déclare la variable B (onglet BD Facture)
    Dim R As Range 'déclare la variable R (Recherche)
    Dim LI As Long 'déclare la variable LI (LIgne)
     
    Set F = Sheets("Facture") 'définit l'onglet F
    Set B = Sheets("BD Facture") 'définit l'onglet F
    Set R = B.Columns(3).Find(N, , xlValues, xlWhole) 'définit la recherche R (recherche le numéro dans la colonne 3 de l'onglet B)
    If Not R Is Nothing Then 'si il existe au moins une occurrence trouvée
        LI = R.Row 'définit la ligne Li (ligne de l'occurrence trouvée)
    Else 'sinon
        'définit la ligne LI comme la première ligne vide de la colonne 3 (=C) de l'onglet B
        LI = B.Cells(Application.Rows, Count, 3).End(xlUp).Row + 1
    End If
    B.Cells(LI, 3).Value = F.Range("K2") 'numéro de facture
    B.Cells(LI, 1).Value = F.Range("K3") 'document
    B.Cells(LI, 2).Value = F.Range("K1") 'client
    B.Cells(LI, 4).Value = F.Range("G5") 'date
    B.Cells(LI, 5).Value = F.Range("H26") 'Montant avec taxes
    B.Cells(LI, 6).Value = F.Range("H27") 'TPS
    B.Cells(LI, 7).Value = F.Range("H28") 'TVQ
    B.Cells(LI, 8).Value = F.Range("H29") 'Montant après taxe
    End Sub

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Coordonnatrice
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Coordonnatrice
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Message d'erreur
    Bonjour Thautheme,
    Je n'arrive pas à saisir pourquoi, mais j'ai une erreur d'exécution ('450' nombre d'arguments incorrect ou affectation de propriété incorrect) qui apparaît à la ligne Else :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LI = b.cells(application.rows,count,3).end(clip).row+1
    J'ai beau relire le tout, je ne vois pas pourquoi.

    Mais sinon, le code semble combler mon besoin!! C'était exactement ce que j'essayais de trouver, soit il trouve N, soit il ajoute une nouvelle ligne...

    Merci !

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 928
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 928
    Points : 28 922
    Points
    28 922
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LI = b.cells(application.rows,count,3).end(clip).row+1
    Qu'elle est la valeur de Clip où as-tu été chercher cette variable ?
    Habituellement on utilise l'un des constantes suivantes xlDown, xlUp, xlToRight ou xlToLeft

  5. #5
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour le fil, bonjour le forum,

    Tabernacle ! Clip ça doit être xlUp en canadien ...

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Bonjour, bonjour !

    Ligne en erreur (syntaxe !) : LI = b.cells(application.rows,count,3).end(clip).row+1

    Correction : LI = B.Cells(Application.Rows.Count, 3).End(xlUp).Row + 1

    Et oui, une virgule n'est pas un point …
    A noter les initiales des instructions passant en majuscule une fois la ligne de code correcte, tabernacle !

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  7. #7
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour le fil, bonjour le forum,

    Bien vu Marc ! Merci de me corriger, j'avions pas vu Tabernacle !

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Coordonnatrice
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Coordonnatrice
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Finito
    Salut les mecs,
    Je n'ai pas trop saisi pourquoi (xlUp) a converti en (Clip) lorsque j'ai ajouter la balise CODE, mais peu importe puisque dans mon document c'était tjrs (xlUp).

    Alors un gros merci, spécialement à Thautheme et Marc, lorsque la virgule a été changée en point, tout fonctionna à merveille!

    Je vais maintenant déplacer ma BD de document et complexifier un peu mes affaires.

    Bonne journée à tous

    Caro
    xx

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

Discussions similaires

  1. enregistrer les données airodump sur une FTA32
    Par neoboy dans le forum Distributions
    Réponses: 0
    Dernier message: 30/11/2011, 12h02
  2. [AC-2000] Exploiter les données figurant sur une liste
    Par ClaudeLELOUP dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 29/07/2010, 18h58
  3. Réponses: 12
    Dernier message: 23/12/2009, 10h56
  4. [AC-97] Update d'une table selon les données d'une autre
    Par coyote90 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 06/11/2009, 15h44
  5. Remplir un comboBox selon les données qui contient l'autre comboBOx
    Par PhiberOptik dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/06/2006, 07h43

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