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 :

Remplir une feuille à son lancement. [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 66
    Par défaut
    Bonjour,
    en tant que grand débutant j'ai des ratés et un oeil averti me ferais du bien.
    Je fait pour un ami un petit log de facturation pour autoentrepreneur que vous trouverez en fichier joint. J'ai une feuille (reglement), je voudrais que ceci se remplisse quand on l'ouvre avec certaine données de mes bases.

    J'ai donc fait ce code mais qui pour le moment a deux problème (et peut être plus).
    D'abord il ne s'exécute pas au lancement de ma feuille et il se plante avec le message suivant ( erreur d'exécution 9 , l'indice n'appartient pas à la sélection !)

    Les données que je souhaite afficher sont les suivante dans ma base_facture et ma base_commande. Je veut recupérer le type de doc (A2) puis le n° du doc qui se trouve dans la colonne A à partir de la 4 ème ligne puis sur la même ligne que le numéro du doc le nom ,la date du doc, l'acompte 1 , l'acompte 2 , le solde et le reste si tous n'est pas réglé car si le reste à régler est de zéro la ligne est ignorée.

    Pour le moment mon code est le suivant et ne demande qu'a évoluer avec votre aide.
    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
       Private Sub reglement_Open()
    Dim cel As Range
    Dim i, j As Integer
    With Sheets("base_facture" & "base_commande")
      Set cel = .Columns("EB").Find(What:=">0,00", LookIn:=xlValues, Lookat:=xlWhole).End(xlUp) - 1
      If Not cel Is Nothing Then
      i = cel.Row
     j = Sheets("reglement").Range("A65536").End(xlUp).Row + 1
    For j = 1 To 8
     
        .Cells(j, 1) = .Cells(2, 1)
        .Cells(j, 2) = .Cells(i, 1)
        .Cells(j, 3) = .Cells(i, 7)
        .Cells(j, 4) = .Cells(i, 2)
        .Cells(j, 5) = .Cells(i, 129)
        .Cells(j, 6) = .Cells(i, 130)
        .Cells(j, 7) = .Cells(i, 131)
        .Cells(j, 8) = .Cells(i, 132)
    Next j
     
    End If
     End With
    Range("A1").Select
    End Sub
    merci d'avance pour vos suggestions..

    comment fait-on pour joindre un fichier sur le forum pour que vous puissiez vous rendre compte?

    merci

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Quelques points

    La déclaration de variable ci dessous retourne une variable de type Variant pour i
    Pour avoir i et j en Integer, il faut écrire comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim i as integer, j as integer
    La concaténation ci dessous n'est pas utile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Sheets("base_facture" & "base_commande")
    Remplacer par
    With Sheets("base_facture base_commande")
    J'ai du mal à comprendre ce que tu cherches avec cette ligne, qui retournera une erreur si la ligne 1 contient des données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set cel = .Columns("EB").Find(What:=">0,00", LookIn:=xlValues, Lookat:=xlWhole).End(xlUp) - 1

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 66
    Par défaut
    coila déja de bon eclairage et je m'enpresse de corriger.

    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set cel = .Columns("EB").Find(What:=">0,00", LookIn:=xlValues, Lookat:=xlWhole).End(xlUp) - 1
    je chercher a reperer toute les lignes de la colone EB ou le montant est supperrieur a zero pour le reporter dans mon tableau de ma feuille reglement

    et au vue de la question j'ai pas bon il faut donc que je creuse davantage cet condition !

    j'aurais bien joint mon fichier pour que les un et les autres puisse serendre compte mais je n'est pas su l'attacher .

    au plaisir de vous lire merci beaucoup

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Si tu met ">0,00" l'instruction Find recherchera le texte ">0,00" et non les valeurs supérieures à 0.

    Je ferais plutôt comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    With Sheets("base_facture base_commande")
     
        For i = 2 To .Range("EB" & Rows.Count).End(xlUp).Row
            If .Range("EB" & i).Value > 0 Then
                '... Code pour transférer dans autre feuille
            End If
        Next i
     
    End With

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 66
    Par défaut
    re j'ai donc repris mon code comme suit :
    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
    Private Sub reglement_Open()
    Dim cel As Range
    Dim i As Integer, j As Integer, k As Integer
    With Sheets("base_facture base_commande")
        For i = 2 To .Range("EB" & Rows.Count).End(xlUp).Row
            If .Range("EB" & i).Value > 0 Then
     
     
        j = Sheets("reglement").Range("A4").Range("A65536").End(xlUp).Row
        .Range("A", j) = .Range("A2")
        .Range("B", j) = .Cells(i, 1)
        .Range("C", j) = .Cells(i, 7)
        .Range("D", j) = .Cells(i, 2)
        .Range("E", j) = .Cells(i, 129)
        .Range("F", j) = .Cells(i, 130)
        .Range("G", j) = .Cells(i, 131)
        .Range("H", j) = .Cells(i, 132)
     
     
    End If
    Next i
    End With
     
    End Sub
    mais j'ai toujours mon erreur 9 (l'indice n'appartien pas a la selection)

    je pense qu'il me manque une condition mais je tourne encore en rond a savoir comment la renseigner car en effet dans ma base facture comme dans ma base commande A2 donne le type (facture n° ou commande n°) et donc je pense qu'il n'est pas content car comme les numero de mes document sont numerotés comme suis (2013-00001) et que dans chaque base la numerotation est la même il ne doit pas savoir quoi faire car j'ai vue que je ne lui est pas dit a quoi correspondait la colonne A de mon tableau et donc li peut mettre facture ou commande sans reelement tenir compte de la numerotation je vais donc probalement reprendre mon code mais avec deux recherche distinct

    pour simplifier :lors de l'affichage de mon tableau je peut avoir
    une ligne recuperer dans ma base facture:
    A= facture B= 2013-00001 C=date de la facture D= nom x E acompte 1 (10) F= acompte 2 (10) G= solde (15) mais le solde n'est pas encore réglé donc en H j'aurai 15
    et avoir une ligne recupérer dans ma base commande avec
    A=commande B=2013-00001 C= date de la commande en D=nom y E= acompte 1 (20) pas d'acompte2 prevu car la note seras regle en deux fois en G= solde (30) et en H= (30)
    sachant quand H lorsque la totalité est réglé il y a 0 puis que via un formulaire je le met comme reglé.

    il y a surement le moyen de lui dire de trier suivant la provenace mais la mes connaissances sont trop minces, je vais donc surement avoir l'approche avec with , if and if

    merci pour toute les indications qui seront les bien venues.

    cedcyr

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Juste pour être sur, tu as bien un onglet qui se nomme "base_facture base_commande" ?

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

Discussions similaires

  1. Problème de débutant (création + remplir une feuille excel)
    Par greg26 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/09/2007, 17h08
  2. Remplir une feuille de calcul excel distante à partir d'un userform
    Par Kikumaru dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/05/2007, 10h43
  3. Minimiser une appli à son lancement
    Par Gaadek dans le forum Delphi
    Réponses: 6
    Dernier message: 23/02/2007, 15h47
  4. [Jxl] remplir une feuille excel
    Par LeXo dans le forum Documents
    Réponses: 3
    Dernier message: 17/02/2007, 17h04
  5. Réponses: 5
    Dernier message: 05/07/2005, 20h25

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