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 :

Vérification code VBA (recopie plusieurs cellules)


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
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2014
    Messages : 92
    Par défaut Vérification code VBA (recopie plusieurs cellules)
    Bonjour, tout le monde
    Etant débutant j'ai modifier quelques code que j'ai trouver à gauche à droite...
    Très bonne chance Il fonctionne
    mais je me dit qu'il y à sûrement mieux... Ou alors que j'ai fait une petite erreur qui ne pose pas de problème pour le moment...
    Vus que c'est pour faire un programme de gestion facturation j'ai intérêt qu'il fonctionne au top.

    Le but de la macro :
    Recopier plusieurs cellules dans une autre feuilles : base de données
    Tbl = Array(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, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53)
    Ligne assez longue... mais a fonctionne ...

    et aussi incrémenter le numéro du devis de 1 à chaque fois

    A ce propos : Question N°2
    Est ce possible d'incrémenter un numéro mais avec une lettre dedans pour que je puisse m'y retrouver entre les
    numéro de facture et les numéro de devis : par exemple au lieu d'avoir 201800001 j'aimerais : D201800001

    Voici le code en question :

    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
    Sub Enregistrer_devis()
     
    Dim FeFacture As Worksheet
    Dim FeDevis As Worksheet
    Dim Tbl
    Dim Lig As Long
    Dim I As Integer
     
    Set FeFacture = Worksheets("Facture")
    Set FeMirror = Worksheets("Mirror")
    Set FeDevis = Worksheets("Devis_2018")
     
    'il est préférable de bien être sûr que "Devis" est entré dans la cellule
    If UCase(FeFacture.Range("E10").Value) = "DEVIS" Then
     
    'recherche de la première ligne vide dans la base de données
    With FeDevis: Lig = .Cells(.Rows.Count, 1).End(xlUp).Row + 1: End With 'sur colonne A
     
    Tbl = Array(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, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53)
     
    For I = 0 To UBound(Tbl)
     
    FeDevis.Cells(Lig, I + 2).Value = FeMirror.Cells(3, Tbl(I)).Value
     
    Next I
     
    'incrémente le numéro client par rapport à la valeur de la cellule du dessus
    FeDevis.Cells(Lig, 1).Value = FeDevis.Cells(Lig - 1, 1).Value + 1
     
     
    MsgBox "Enregistrement terminé"
     
    Else
    MsgBox "erreur"
     
     
    End If
     
     
    End Sub

    Merci à tous

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    Est ce possible d'incrémenter un numéro mais avec une lettre dedans
    tu traites les chiffres et après tu colles les lettres --> D201800001 -> D 2018 00001

    VarNumero = "D201800001"

    partie_1 : left(VarNumero,1) --> D
    partie_2 : Année --> 2018
    partie_3 : right(VarNumero,5) --> 00001

    incrémentation
    partie_3 = val(partie_3) + 1 --> 00002

    reconstruction
    VarNumero = partie_1 & "2018" & partie_3 --> D201800002

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2014
    Messages : 92
    Par défaut re
    Merci, bon j'ai bon tester je ne voit pas comment faire fonctionner sa...
    saurais tu me donner le code correct à mettre à la place de mon code actuel ?

    'incrémente le numéro client par rapport à la valeur de la cellule du dessus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FeDevis.Cells(Lig, 1).Value = FeDevis.Cells(Lig - 1, 1).Value + 1

  4. #4
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    varAncienNuméro=FeDevis.Cells(Lig - 1, 1).Value
    varNouveauNumero=val( right(VarAncienNumero,5) ) + 1
     
    FeDevis.Cells(Lig, 1).Value="D2018" & varNouveauNumero
    tu peut aussi couper en 2 parties
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    varPartieImmobile=left(FeDevis.Cells(Lig - 1, 1).Value,len(FeDevis.Cells(Lig - 1, 1).Value)-5)
    varPartieIncrement=val( right(FeDevis.Cells(Lig - 1, 1).Value,5) ) + 1
     
    FeDevis.Cells(Lig, 1).Value = varPartieImmobile & varPartieIncrement
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    voyons voir si j'ai bien compris ce que tu veux faire

    tu veux copier les cellules d'une ligne(LIG) vers une autre cellule (la premier dispo) dans une autre feuille et ce la de la colonne 1 a 53

    si c'est cela regarde bien les exemple qui suivent
    tout d'abords ton code comme tel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'recherche de la première ligne vide dans la base de données
        With FeDevis: Lig = .Cells(.Rows.Count, 1).End(xlUp).Row + 1: End With    'sur colonne A
        Tbl = Array(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, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53)
        For I = 0 To UBound(Tbl)
            FeDevis.Cells(Lig, I + 2).Value = FeMirror.Cells(3, Tbl(I)).Value
        Next I
    pour le simplifier je l'ecrirais comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'recherche de la première ligne vide dans la base de données
        With FeDevis: Lig = .Cells(.Rows.Count, 1).End(xlUp).Row + 1: End With    'sur colonne A
        For I = 1 To 53
            FeDevis.Cells(Lig, I + 1).Value = FeMirror.Cells(3, I).Value
        Next I
    et si je voulais encore plus le simplifier je l'ecrirais comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Destination = FeDevis.Cells(Lig, 2).Resize(1, 53)
        Source = FeMirror.Cells(3, 1).Resize(1, 53).Value
        Destination.Value = Source
    et!! si je voulais encore encore plus le simplifier je l'ecriarais comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FeMirror.Cells(Lig, 2).Resize(1, 53).Copy Destination:=FeDevis.Cells(3, 1)
    je te suggere de bien regarder chaque code tu comprendra tout seul le dernier
    A+
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    Patrick le Rétrécisseur

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

Discussions similaires

  1. [Toutes versions] Partager du code VBA entre plusieurs bases
    Par guidav dans le forum VBA Access
    Réponses: 5
    Dernier message: 02/03/2012, 23h25
  2. Code VBA - Référence à une cellule et autre
    Par Yvouille dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/07/2010, 20h57
  3. [PPT-2007] Utiliser du code VBA sur plusieurs objets et pas qu'un seul
    Par beegees dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 25/03/2010, 09h55
  4. Code VBA uniquement si cellule modifiée
    Par tictactoc dans le forum Excel
    Réponses: 1
    Dernier message: 12/06/2009, 17h29
  5. code VBA copie colle cellule d'1 fichier excel à 1autre
    Par tony020422 dans le forum Macros et VBA Excel
    Réponses: 30
    Dernier message: 03/06/2009, 18h47

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