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 :

[E-07] Copier textbox1.value dans cellule vide sur feuille définie par combobox


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Points : 23
    Points
    23
    Par défaut [E-07] Copier textbox1.value dans cellule vide sur feuille définie par combobox
    voila bonjour a tous j essaye de me faire un petit programme de gestion de mes finnance et depense....
    l avancement se passait bien jusqu au moment ou j ai une idée lumineuse (completement folle vu que je ne connais pas assez le vba lol)
    voila mon probleme j ai un userform avec 3 combobox
    une pour les jour du mois une pour le mois et la derniere pour le type de depense ou entrée (medecin medicament cigarette (jesais pas bien lol),salaire mutuelle, etc...)
    mon classeur posede une feuille pour chaque type de depense ou entrée
    il posede aussi un bouton nommé ajouter
    j aimerai que selon le type de depense la maccro me copie la valeur de textbox1(sur l userform aussi) vers la feuille du type et m inscrive la date juste a coter et le meilleur pour la fin qu il me la copie sur une cellule vide bien entendu ^^ lol

    svp me parler as de sql server ou base de donnée j ai lu deux bookin a ce sujet et j ai rien pigé

    la version d excel que jutilise et la derniere en date

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut dec3003 et le forum
    Bienvenue
    (completement folle vu que je ne connais pas assez le vba lol)
    Il n'y a que des fous sur ce forum, ça tombe bien.
    une pour les jours (Si on avait son nom et la colonne qui lui corresponde) du mois une pour le mois (idem) et la derniere pour le type de depense ou entrée (medecin medicament cigarette (jesais pas bien lol),salaire mutuelle, etc...) (ça serait pas mal d'avoir les noms)
    n'y connaissant pas grand chose soit précis pour pouvoir comprendre à quoi se rattache chaque instruction
    la version d excel que jutilise et la derniere en date
    donc t'as Excel 2009 ?
    je suppose que c'est la version 2007, donc met-le en clair. Ce n'est pas parce que tu viens juste de l'acheter qu'il n'en existe pas d'autres plus récentes.
    A+

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Points : 307
    Points
    307
    Par défaut Gestion Frais
    Voici un schèma perfectible qui te permettra de démarrer.
    je n'ai pas relu le texte en détail ...


    La fonction suivante ajouter_depense est à ajouter sur le bouton ajout.

    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
     
     
    Sub ajouter_depense()
     
    If CB_mois.texte <> "" And CB_jour.texte <> "" Then
     
    If CB_type_depense.texte <> "" Then
    classeur = ""
     
    Select Case CB_type_depense.texte
     
    Case medicament
    classeur = "Médicaments"
    Case medecin
    classeur = "Médecin"
     
    Case cigarette
    classeur = "cigarette"
     
    Case Else
    classeur = "divers"
     
    End Select
     
    ligne_classeur = worksheets(classeur).Range("A1").CurrentRegion.rows.Count
     
    workshhets(classeur).Cells(ligne_classeur + 1, 1).valeur = CB_jour.texte & "/" & CB_mois.texte
    workshhets(classeur).Cells(ligne_classeur + 1, 2).valeur = somme_depense
    else 
    MsgBox " Veuillez completer a rubrique dépense"
     
     
    End If
     
    Else
    MsgBox " Veuillez completer le mois et l'année"
    End If
    End Sub
    Bon courage pour la suite .

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Points : 23
    Points
    23
    Par défaut Correction et explication etendue
    tout d'abord merci bcp pour ton aide et ces ligne qui clarifie un peu mon idée de la synthaxe a adopté

    donc tout a fait la version est bien la 2007 (j avais oublier la 2009 (oh le champion du monde))

    donc pour etre clair je n ai encore defini aucune variable
    ce qui est clair : j ai une combo box qui contient le non de tout e mes feuille donc une pour salaire , course,cigarette et les 30 autres lol

    donc ma partie de code pour cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub ajoutter()'ajout entrée ou sortie budget
    dim a as string
    a = Cstr (combobox1.value)
    maintenant pour faire simple j aimerai via une fonction ou autre selon la valeur de a faire une recherche dans la feuille a donc dans la feuille cigarrette ou autre une recherche sur les deux premiere colone de la feuille pour trouver une double case vide(cote a cote) et pas re ecrire sur une valeur pre enregistrée et y inscrire la valeur (qui est je ne sais plus de quel type mais c est des nombre genre 10,58 lol) et dans la case a coter la date qui serai prise dans la textbox2 par exemple mais tout cela obligatoirement sur une feuille du type excel car les base de données et moi ca fais au moins 10 000 lool
    et je ne vous embeterai plus pour mes fonction suivante lol c 'est cette derniere l'ultime de mon simple petit program lol
    sur ce merci d avance pour votre aide

    ps que sont tes CB_ dans ta synthaxe desoler pour la bete question mais meme apres deux livre genre vb pour les nul et vba pour les nul , j ai toujours du mal avec certaine chose (je devrai surement relire un peu pour remplir mes lacune ) (mais bon il n explique quand meme pas tout)

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Points : 307
    Points
    307
    Par défaut Infos
    Dans l'exemple qui a été fourni , on évite d'écraser une ligne déja renseignée car on compte le nombre de ligne déja existante avec la syntaxe .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ligne_classeur = worksheets(classeur).Range("A1").CurrentRegion.rows.Count
    J'ai pris comme option de compter le nombre ligne par rapport à la colone A.
    Regarde l'aide sur currentregion pour bien comprendre cette notion sous excel.

    c'est une méthode plus simple que de faire une incrémentation de ligne jusqu'a ce que colonne 1 et colonne2 de ligne X soit vide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ligne = 1
    do 
    if not ( cells ( ligne , 1).value = "" and  cells ( ligne , 2).value = "" then ligne = ligne + 1 
    loop while  cells ( ligne , 1).value = "" and  cells ( ligne , 2).value = ""




    Pour le CB_ .... c'est un exemple pour désigner le Combo Box ( je n'ai pas repris tes nom de contrôle )

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut dec3003 et le forum
    Pas facile de t'aider : le principe d'un fichier d'essai c'est de fournir les données en nombre limité, mais de sorte qu'elles soient représentatives Une combobox de 3 lignes suffit pour après l'étendre à un nombre infini.
    En règle générale, les nom des objet renseignent sur leurs natures : ça permet d'utiliser facilement plus de variables. Ainsi, un nom de combobox commencera par CB_ ou Cbo_. Et là, tu vois les limites de ne donner aucune indication : celles fournit ne correspondent à rien pour toi!
    donc tout a fait la version est bien la 2007 (j avais oublier la 2009 (oh le champion du monde))
    c'était une galéjade, juste pour te rappeler que tout ce qui est évident pour toi, avec tes infos, peut être compris différemment par quelqu'un qui a d'autres infos que toi. Ne jamais rien laisser dans le vague! Sinon tu as un risque d'interprétation et ce ne sera pas forcément la même pour tout le monde!

    ce qui est clair : j ai une combo box qui contient le non de tout e mes feuille donc une pour salaire , course,cigarette et les 30 autres lol
    Laquelle contient les OUI ???
    Il vaut mieux passer du temps à créer un poste que le perdre à interprêter les réponses parce que la question est mal comprise.
    donc ma partie de code pour cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub ajoutter()'ajout entrée ou sortie budget
    dim a as string
    a = Cstr (combobox1.value)
    ça va pas être triste!
    a est déclarée en chaîne de caractères : du texte quoi
    Une combobox contient du texte et uniquement du texte
    et tu juges nécessaire de convertir le texte en texte pour le mettre dans une variable texte. Pas vraiment sûr que ce soit utile
    Sur excel, il faut être feignant : moins tu écris de code, moins tu risques une erreur de frappe. mets ce qui est nécessaire, évites le surperflu. Ton code sera plus lisible, et donc tu iras plus vite pour le dépanner en cas de plantage.

    un exemple de 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
    dim F as worksheet 
    dim Lig as long
    for each F in sheets
         if F.name = combobox1 then exit for
    next F
    If F Is Nothing Then 
         MsgBox "Pas de feuille trouvée!!!"
         Exit Sub
    end if
    with F
    Lig = IIf(.Range("A" & .Rows.Count).End(xlUp).Row > _
            .Range("B" & .Rows.Count).End(xlUp).Row, _
            .Range("A" & .Rows.Count).End(xlUp).Row, _
            .Range("B" & .Rows.Count).End(xlUp).Row) + 1
    end with
    F est déclaré en variable feuille
    Lig est déclaré en entier long : integer est limité à 32767 et ta feuille peut en contenir nettement plus.
    Pour chaque feuille (F) de la collection des feuilles (sheets)
    si le nom de la feuille (F.name) est égal au contenu de la combobox, alors sortir de la boucle
    Me : variable qui représente le supprt : comme ta combo est sur un USF, Me sera une variable représentant le USF. Quand tu entreras un point derière le Me, un menu te permettra de choisir toutes les possibilités et tu trouveras ta combobox dans celles-ci (ça évite bien des erreurs de frappe). Dès qu'on trouve une correspondance entre le nom de la feuille F et la valeur de la combobox, on sort de la boucle, mais F contient une feuille. Si il n'y a aucune correspondance, F ne contient rien quand on finit la boucle

    En sortie de la boucle on teste F : il n'y a pas eu de nom de feuille trouvé, F est vide (F is nothing) on averti, puis on sort.
    Il y a eu une Feuille F de trouvée
    on la met en préfixe (With F)
    toutes instructions commençant par un point (.Range) signifiera (F.Range)

    Iif(condition, réponse 1, réponse 2)
    si la condition est vraie (True) on retourne réponse 1
    si la condition est fausse (False) on retourne réponse 2
    en final, on a la dernière ligne de A:B +1
    A+

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

Discussions similaires

  1. [XL-2007] Automatiser l'ajout de 0 dans cellules vides
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 07/09/2014, 19h09
  2. Réponses: 12
    Dernier message: 27/07/2014, 10h51
  3. [Toutes versions] Coller dans cellule vide
    Par Aurianelm dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/06/2013, 09h25
  4. [XL-2007] Message texte automatique dans cellules vide
    Par mitsue dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/07/2012, 09h10
  5. Copier des valeurs dans des vide qui suit la valeur
    Par sniper75 dans le forum SAS Base
    Réponses: 8
    Dernier message: 23/01/2012, 20h06

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