compteur incremental et sauvegarde feuille seulement

  • Initiateur de la discussion Initiateur de la discussion scorplo77
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

scorplo77

Guest
Bonjour,
Je souhaite créer un compteur incrémental en H1 sur ma feuille 2 nommé compteur, et rappeler ce numéro en H1 sur ma feuille 1 nommé devis.
J’ai créé un bouton afin d’enregistrer le classeur sous le nom d’une cellule, je voudrais le modifier pour n’enregistrer que la page devis et c’est macro afin que quand je ré ouvre un devis le compteur ne soit plus actif.
Pour le compteur, j’ai trouvé ça, mais ça ne marche pas pour la bonne feuille

Private Sub Workbook_Open()
Range("H1").Value = Range("H1").Value + 1
ActiveWorkbook.Save
End Sub


Et pour la sauvegarde j’ai ça

Sub enregister()
Dim NOM As String
NOM = Range("N3")
ThisWorkbook.SaveAs "C:\Mes documents\STE \DEVIS ET FACTURES\" & Range("N3").Value
End Sub

Merci pour votre aide
 
Re : compteur incremental et sauvegarde feuille seulement

Bonjour,

Pour le premier code peut-être que ceci conviendrait:
Code:
Private Sub Workbook_Open()
With Sheets("Feuil2")
    .Range("H1").Value = .Range("H1").Value + 1
End With
End Sub

Peut-être que ActiveWorkbook.Save n'est pas utile ici mais plutôt uniquement avant ou après la sauvegarde.

Pour la deuxième:
Code:
Sub enregister()
    Dim NOM As String
    NOM = Range("N3")
    ThisWorkbook.Save    'pour sauvegarder le classeur et son compteur
    'Créer le nouveau classeur
    ThisWorkbook.SaveAs "C:\Mes documents\STE \DEVIS ET FACTURES\" & Range("N3").Value
    'le nouveau classeur et devenu le classeur actif
    'détruire sa feuille 'Feuil2'
    ActiveWorkbook.Sheets("Feuil2").Delete
End Sub

Où 'Feuil2' est dans les deux macros le nom de la feuille qui contient le compteur.

A+
 
Re : compteur incremental et sauvegarde feuille seulement

Merci HASCO,

Mais ça ne marche que si j'enregistre le classeur en etant sur la feuille 2,
et moi je veux l'ouvrir sur la feuille 1 et que le compteur compte sur 2
Pour le reste j 'ai pas essayer encore
 
Re : compteur incremental et sauvegarde feuille seulement

J'ai simplifié les choses en mettant le compteur sur la meme feuille,
par contre je veux toujours sur mon bouton, l'enregistrer puis effacer J1 (le compteur) et enregistre le tout sous ...

Comment faire ?
 
Re : compteur incremental et sauvegarde feuille seulement

Voila, je vais poster mon fichier.

Donc c'est une matrice pour des devis, d'ou le compteur.
et je veux pouvoir en un clic sur le bouton enregistrer,
enregistrer la matrice avec le nouvel indice en H1
(pour qu'a la prochaine ouverture l'indice change)
enregistrer la matrice sous le nom (ind essai) de la cellule N3
(voir chemin macro)
mais la suptilité c'est que quand je vais réouvrir le devis, je ne veux plus que le compteur compte 🙂
Merci
 

Pièces jointes

Re : compteur incremental et sauvegarde feuille seulement

non je veux juste un compteur sur la matrice

et une macro sur le bouton sauvegarder qui enregistre la matirce et apres enregistre le devis indicé (que je laurai rempli)
mais la suptilité c'est que quand je vais réouvrir le devis, je ne veux plus que le compteur compte
 
Re : compteur incremental et sauvegarde feuille seulement

Bonjour,

Pour enregistrer la feuille devis sans macros, l'incrémentation se fait en fin d'enregistrement du devis (Enlever la macro WorkBook_Open)

Code:
Sub enregister()
Dim NOM As String
NOM = Range("N3")
'Copier la feuille devis dans un nouveau classeur
Sheets("DEVIS").Copy
'Sauvegarde le nouveau classeur
ActiveWorkbook.SaveAs "C:\Mes documents\STE\DEVIS ET FACTURES\" & Range("N3").Value
'Ferme le nouveau classeur
ActiveWorkbook.Close
'Incrémente le compteur pour le prochain devis
With ThisWorkbook.Sheets("DEVIS").Range("H2")
    .Value = .Value + 1
End With
End Sub

A+
 
Re : compteur incremental et sauvegarde feuille seulement

Re,

Voici une macro qui enregistre une copie du fichier, supprime les feuilles autres que "DEVIS" (Attention le nom dans ton classeur comportait un espace final "DEVIS " que j'ai enlevé).

La macro ouvre le nouveau devis, en vide la cellule J2 (compteur) le sauvegarde et le ferme

Le compteur du classeur d'origine est ensuite incrémenté.

Code:
Sub enregister()
Const Chemin As String = "C:\Mes documents\STE\DEVIS ET FACTURES\"
Dim wkDevis As Workbook
Dim sh As Worksheet
Dim NOM As String
NOM = Range("N3") & ".xls"
'Enregistre une copie sur le disque
ActiveWorkbook.SaveCopyAs Chemin & "\" & NOM
'ouvre la copie pour en supprimer les feuilles inutiles et effacer le compteur
Set wkDevis = Workbooks.Add(Chemin.Path & "\" & NOM)
With wkDevis
    For Each sh In Worksheets
        If sh.Name <> "DEVIS" Then sh.Delete
    Next
    'efface le compteur du devis
    Sheets("DEVIS").Range("J2").ClearContents
    .Save 'sauvegarde le devis
    .Close 'ferme le devis
End With
Set wkDevis = Nothing
ThisWorkbook.Activate
'Incrémente le compteur pour le prochain devis
With ThisWorkbook.Sheets("DEVIS").Range("J2")
    .Value = .Value + 1
End With
End Sub

A+
 
Dernière modification par un modérateur:
Re : compteur incremental et sauvegarde feuille seulement

Merci grace à toi j'ai bien avancé !!!
je poste mon nouveau fichier, il ne me reste plus qu'une chose à faire,
dans ma macro "enregistrer" du bouton,
il faut que je rajoute : desactiver la macro d'ouverture soit Private Sub Workbook_Open() juste avant le reste pour enregistrer.

Merci à tous

Ps mettre "essai 1" pour la reponse à la question du fichier posté
 

Pièces jointes

Re : compteur incremental et sauvegarde feuille seulement

Bonjour,

Je vois que tu n'as pas tenu compte du travail que j'avais fait pour la macro 'enregistrer'. Mais bon, c'est ton choix.

Le moyen le plus simple est de déménager les lignes contenues dans ta macor WorkBook_Open dans une macro Aut😵pen d'un module général (Module1 par exemple):

Code:
Sub Auto_Open()
NOM = InputBox("NOM ET PRENOM DU CLIENT : ", "QUESTION")
With Sheets("DEVIS")
.Range("G3").Value = NOM
If IsEmpty(.Range("G3")) Then
   MsgBox "la cellule est vide"
Else
.Range("J1").Value = .Range("J1").Value + 1
ActiveWorkbook.Save 'Je me demance ce que cela fait là!!!!
End If
End With
End Sub

Détruit ensuite la macro WorkBook_Open. L'autre sera appelé à l'ouverture du classeur. Elle ne sera pas enregistrer avec la Feuille DEVIS.

A+
 
Re : compteur incremental et sauvegarde feuille seulement

Oui c'est vrai j'ai fait comme j'ai pu, parce que je ne comprenait pas tout.
mon but est d'apprendre en meme temps.

ActiveWorkbook.Save enregistre le document apres le comptage

moi 'ai déménagé WorkBook_Open dans le module 2 Sub Aut😵pen()
mais quand je clic sur mon bouton ça me sauvegarde le compteur et la inputbox.
que me manque t'il ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

P
  • Question Question
Réponses
3
Affichages
1 K
C
Réponses
1
Affichages
2 K
J
Réponses
0
Affichages
1 K
julie13
J
K
Réponses
1
Affichages
785
KnewIT
K
T
Réponses
10
Affichages
6 K
Terreur
T
R
  • Question Question
Réponses
4
Affichages
929
recoverybis
R
Retour