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 :

Utiliser feuil excel comme formulaire et copié les valeurs vers une autre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    comptable principal
    Inscrit en
    Octobre 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Autre

    Informations professionnelles :
    Activité : comptable principal
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2010
    Messages : 434
    Par défaut Utiliser feuil excel comme formulaire et copié les valeurs vers une autre
    Bonjour
    J’utilise feuil "caisse " comme un formulaire pour saisir des montants et après je les archiver dans un autre feuil " table " et je vide le formulaire
    au début j'ai commencé par ce 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
    Sub TEST()
    'les cellules de la colonne b
    Sheets("table").Range("a1").End(xlDown).Offset(1, 0) = Sheets("caisse").Range("b1").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 1) = Sheets("caisse").Range("b2").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 2) = Sheets("caisse").Range("b4").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 3) = Sheets("caisse").Range("b5").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 4) = Sheets("caisse").Range("b7").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 5) = Sheets("caisse").Range("b8").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 6) = Sheets("caisse").Range("b11").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 7) = Sheets("caisse").Range("b12").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 8) = Sheets("caisse").Range("b13").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 9) = Sheets("caisse").Range("b14").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 10) = Sheets("caisse").Range("b16").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 11) = Sheets("caisse").Range("b21").Value
    'les cellules de la colonne c
    Sheets("table").Range("a1").End(xlDown).Offset(0, 12) = Sheets("caisse").Range("c5").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 13) = Sheets("caisse").Range("c9").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 14) = Sheets("caisse").Range("c11").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 15) = Sheets("caisse").Range("c12").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 16) = Sheets("caisse").Range("c13").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 18) = Sheets("caisse").Range("c16").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 19) = Sheets("caisse").Range("c21").Value
    'les cellules de la colonne d
    Sheets("table").Range("a1").End(xlDown).Offset(0, 20) = Sheets("caisse").Range("d4").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 21) = Sheets("caisse").Range("d11").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 22) = Sheets("caisse").Range("d15").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 23) = Sheets("caisse").Range("d18").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 24) = Sheets("caisse").Range("d19").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 25) = Sheets("caisse").Range("d20").Value
    Sheets("table").Range("a1").End(xlDown).Offset(0, 26) = Sheets("caisse").Range("d21").Value
     
    Sheets("caisse").Range("B2, b4:b10, b12:b20").ClearContents
     
    End Sub
    mais j'ai trouvé deux problèmes
    1- le code est très long et surtout si j'ajoute une deuxième ou troisième formulaire
    2- les cellules "B11" "C11" "D11" contiennent une formule matricielle et le code ne copier pas leurres valeurs et voici la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {=INDEX(TABLE!G1:G39948;MAX((TABLE!B1:B39948=B2)*LIGNE(TABLE!G1:G39948)))}
    Apres j'ai essayé cette méthode
    j'ai affecte tous les valeurs dans une seul ligne c-a-d E1=B1 F1=B2 G1=B4 H1=B5 jusqu’à AD1=D21 et en suite copier tous la plage de E1:AD1 vers feuil Table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Macro2()
        Range("E1:AD1").Copy
        Sheets("TABLE").Range("a1").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Sheets("TABLE").Columns("A:A").NumberFormat = "m/d/yyyy"
        Application.CutCopyMode = False
        Sheets("caisse").Range("B2, b4:b10, b12:b20").ClearContents
    End Sub
    SVP aidez moi de trouvez un code pratique et rapide en excution parce que au fin d’année je me trouve avec une 10000 ligne dans la feuil TABLE
    merci beaucoup

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonsoir ilyess , bonsoir à tous
    n'est pas claire ta demande et tu risque de ne pas avoir de l'aide
    Mais je demande pourquoi ne pas utiliser un userform (avec des textbox évidement, et/ou combobox + un bouton de commande ) pour saisir tes données et les envoyer dans une feuille Excel . D'ailleurs le USERFORM est dédié pour ça et ça t'évite cette usine à gaz !!!
    Bonne courage et désolé si ma réponse te pousse pas en avant

  3. #3
    Membre éclairé
    Homme Profil pro
    comptable principal
    Inscrit en
    Octobre 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Autre

    Informations professionnelles :
    Activité : comptable principal
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2010
    Messages : 434
    Par défaut
    cette usine à gaz !!!


    merci pour votre réponse
    je ne sais pas comment je vous explique mieux mais voici deux captures écrans consternant
    feuil CAISSE
    Nom : Capture1.JPG
Affichages : 239
Taille : 128,9 Ko
    feuil TABLE
    Nom : Capture2.JPG
Affichages : 193
Taille : 86,1 Ko

  4. #4
    Membre expérimenté
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 146
    Par défaut
    Bonjour,

    Tu pourrais déjà, pour commencer, :
    - simplifier ton code (voir With ... End With)
    - désactiver le rafraichissement d'écran (voir Application.ScreenUpdating = [True|False])

  5. #5
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonsoir
    Pour ne pas écraser à chaque fois les ancien données il faut chercher la dernière ligne de la feuille table , ajouter 1 et écrire la bas
    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
    Sub enregistrer()
    Dim i As Long
    Application.ScreenUpdating = False
    With Sheets("TABLE")
    i = .Range("A" & Rows.Count).End(xlUp).Row + 1
    'les cellules de la colonne b
    .Cells(i, 1) = Sheets("caisse").Range("A1").Value
    .Cells(i, 2) = Sheets("caisse").Range("b2").Value
    .Cells(i, 3) = Sheets("caisse").Range("b4").Value
    '
    '
    '
    '
     
     ' continuer la procédure
     
     
     
    End With
    Sheets("caisse").Range("B2, b4:b10, b12:b20").ClearContents
    Application.ScreenUpdating = True
    End Sub
    J'espère que ce te porte de l'aide et encore j'insiste à passer via USERFORM
    Bonne continuation

Discussions similaires

  1. [XL-2010] Aide copie range feuille vers une autre feuille à tous les changements titre d'emploi
    Par fredyboy26 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/12/2015, 20h24
  2. Réponses: 4
    Dernier message: 05/09/2008, 16h02
  3. Réponses: 0
    Dernier message: 11/08/2008, 11h13
  4. {VBA Excel} Colorier des cases selon la valeur dans une autre
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/06/2008, 10h56
  5. Réponses: 2
    Dernier message: 13/11/2007, 15h58

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