Vérification VBA pour que sa soit plus simple

Bonjour, étant débutant j'ai modifier quelques code que j'ai trouver à gauche à droite...

Très bonne chance sa fonctionne

mais je me dit qu'il y à surement mieux...

à vous de voir

Le but de la macro :

Recopier plusieurs cellules dans une autre feuilles : base de données

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

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

Bonjour,

Sans fichier il me semble compliqué de trouver comment simplifier ta macro. D'autant que tu as assez peu de lignes finalement, donc ça ne me paraît pas si mal.

Pour répondre à ta question, oui il doit être possible de le faire en demandant à ce que ta cellule à incrémenter vale

"D" ou "F" & Year(Date) & Format(1,"00000")

et tu remplaces le 1 par la valeur à incrémenter.

Sha'

Je vais essayer cela demain en espérant que j'y arrive car je galère en vba

voici le fichier au cas ou

419-03-18-copie.xlsm (218.72 Ko)

et c'est cette ligne que je pense qu'on peut faire mieux car sa utilise tableau comme si les cellules ne se suivait pas alors qu'elle se suivent... mais vus que j'avais se code et que je l'y connais pas beh je l'ai utiliser tel quel...

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)

Bonjour,

For I = 1 To 53
   FeDevis.Cells(Lig, I + 1).Value = FeMirror.Cells(3, I).Value
Next I

eric

Eric : Merci sa fonctionne aussi et c'est plus facile que de tout taper

Sharney : je n'arrive pas à transformer mon code existant il marque erreur type :/

Le code que j'ai pour incrémenter de 1 pour le moment c'est :

FeDevis.Cells(Lig, 1).Value = FeDevis.Cells(Lig - 1, 1).Value + 1

Merci

Bonjour Geoffrey,

Tu a écrit :

il marque erreur de type :/

Tu as ce code VBA (qui est tout à fait correct) :

With FeDevis: Lig = .Cells(.Rows.Count, 1).End(xlUp).Row + 1: End With 'sur colonne A

Sur ta feuille de calcul, je suppose que ton tableau a une ligne d'entêtes ; par exemple en ligne 1.

Si ton tableau est vide, il ne contient aucune donnée ➯ .End(xlUp).Row = 1 et Lig = 2 ; exact ?


Or ta ligne de code qui génère l'erreur est celle-ci :

FeDevis.Cells(Lig, 1).Value = FeDevis.Cells(Lig - 1, 1).Value + 1

donc à ce moment-là : Lig - 1 = 2 - 1 = 1 ... et Cells(Lig - 1, 1) tombe sur A1 qui n'est pas numérique car c'est le titre de ta première colonne ! vu ? (donc si c'est bien ça, j'te laisse corriger )

dhany

Rechercher des sujets similaires à "verification vba que soit simple"