XL 2013 VBA Prochain numéro

Danyk01

XLDnaute Occasionnel
Bonjour

J’aimerais afficher dans le dossier A, cellule (A3) le dernier numéro +1 d’une liste qui se trouve dans le dossier B, Feuil1,Liste : LNumero
ex : dossier A : C:\mes documents\MATRICE_TEST.xlsm\ cellule (A3)
dossier B : C:\mes documents\JOURNAL.xlsm\ colonne A, dernier numero+1
Avec un clic sur le bouton “Prochain Numéro”

Merci pour votre aide
 

Pièces jointes

  • MATRICE_TEST.xlsm
    17.1 KB · Affichages: 2
  • JOURNAL .xlsm
    12.1 KB · Affichages: 3
Solution
Bonjour
Ta macro
VB:
Sub ProchainNum()
  Dim derlig As Long
  With Workbooks("JOURNAL .xlsm")
   derlig = .Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
   Range("A3").Value = .Sheets("Feuil1").Range("A" & derlig).Value + 1
  End With
End Sub
A+ François

Danyk01

XLDnaute Occasionnel
Merci Laurent
Mais il me faut un code VBA, j'explique mon usine à gaz:
1- Je créé un devis à l'aide de ma matrice avec le dernier n°+1 issu du journal
2- je fais une archive (1 ligne dans le journal et une copie du devis dans le fichier du client)
Jusque là tout fonctionne

3- mais si j'ouvre ma matrice pour un nouveau devis, l'ancien numéro s'affiche
c'est là que je dois pouvoir cliquer sur le bouton pour sélectionner un nouveau n°

Je vais qd même essayer ta solution
A+
 

fanfan38

XLDnaute Barbatruc
Bonjour
Ta macro
VB:
Sub ProchainNum()
  Dim derlig As Long
  With Workbooks("JOURNAL .xlsm")
   derlig = .Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
   Range("A3").Value = .Sheets("Feuil1").Range("A" & derlig).Value + 1
  End With
End Sub
A+ François
 

patricktoulon

XLDnaute Barbatruc
BONJOUR
j'arrive tard mais bon
il y avait aussi la solution du names caché

un bouton qui appelle la macro newdevis

VB:
Sub newdevis()
    Dim nom As Names
    For Each n In Application.Names
        If n.Name = "DevisNumber" Then x = True
    Next
    If Not x Then
        Application.Names.Add "DevisNumber", 1, False
    Else
        Names("DevisNumber").RefersTo = Val(Replace(Names("DevisNumber"), "=", "")) + 1
    End If
    Cells(2, 3).value= Replace(Names("DevisNumber"), "=", "")
End Sub
ça permet de se dispenser d'une feuille mémoire
bien Evidemment il faut faire un save de la même manière qu'avec une feuille mémoire

cela dit
le save de la "matrice"(pour employer le même terme) doit se faire après enregistrement du devis
car si on annule par exemple la saisie d'un devis on aura des numéros qui ne se suivent pas
 

Danyk01

XLDnaute Occasionnel
BONJOUR
j'arrive tard mais bon
il y avait aussi la solution du names caché

un bouton qui appelle la macro newdevis

VB:
Sub newdevis()
    Dim nom As Names
    For Each n In Application.Names
        If n.Name = "DevisNumber" Then x = True
    Next
    If Not x Then
        Application.Names.Add "DevisNumber", 1, False
    Else
        Names("DevisNumber").RefersTo = Val(Replace(Names("DevisNumber"), "=", "")) + 1
    End If
    Cells(2, 3).value= Replace(Names("DevisNumber"), "=", "")
End Sub
ça permet de se dispenser d'une feuille mémoire
bien Evidemment il faut faire un save de la même manière qu'avec une feuille mémoire

cela dit
le save de la "matrice"(pour employer le même terme) doit se faire après enregistrement du devis
car si on annule par exemple la saisie d'un devis on aura des numéros qui ne se suivent pas
Merci Patrick
FanFan38 m'a envoyé un code qui fonctionne
Je vais qd même essayer le tien Histoire de me familiariser avec les macros
Dany
 

Discussions similaires

Réponses
2
Affichages
218
Réponses
18
Affichages
644

Statistiques des forums

Discussions
312 326
Messages
2 087 311
Membres
103 513
dernier inscrit
adel.01.01.80.19