Macro Excel 2007

Résolu/Fermé
evevdll
Messages postés
81
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
- 19 janv. 2009 à 22:03
evevdll
Messages postés
81
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
- 25 janv. 2009 à 13:33
Bonjour à toute et tous,

Je ne connais que très peu le langage des macros mais j'essaie un peu et me débrouille.
Cependant, j'ai besoin d'aide car l'enregistreur de macro ne fait pas tout le travail.

J'ai créé une macro qui copie ma feuille (Facture) qui est mon modèle de base en nouvelle feuille (du même classeur) et la nomme selon une valeur qu'il trouve dans une cellule (E090101) soit le numéro de facture.

Cependant, quand je créé une nouvelle facture si j'ai oublié de modifier le numéro de facture, j'aimerai qu'il vérifie si ce numéro (qui va devenir le nom d'une nouvelle feuille du classeur) n'existe pas déjà dans le classeur car sinon la macro ne fonctionne pas à cause des doublons de noms de feuille.
Je ne sais pas comment écrire la macro car il faut poser une condition.

De plus, j'ai besoin qu'il vérifie que la cellule C12 de ma feuille Facture ne soit pas vide lors de la macro.

Si quelqu'un peut m'aider, je lui serait très reconnaissante.
Merci d'avance,
Eve

4 réponses

eriiic
Messages postés
24408
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 juin 2022
7 089
19 janv. 2009 à 22:37
Bonsoir,

Un exemple de ce que tu pourrais faire avec ton n° de facture dans ("Feuil1").[A1] :
Sub test()
    ok = True
    For Each w In Worksheets 'contrôle si n° non utilisé
        If w.Name = Worksheets("Feuil1").[A1] Then
            ok = False
            Exit For
        End If
    Next w
    If Not ok Then
        MsgBox ("N° facture déjà utilisé")
    ElseIf Worksheets("Facture").[C12].Value = "" Then 'contrôle de C12
        MsgBox ("C12 vide")
    Else
        'Call ton_sub
    End If
End Sub

eric
0
evevdll
Messages postés
81
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
51
19 janv. 2009 à 22:41
Merci Eric,
Je vais tester tout de suite en espérant placer le code à la bonne place.
Je te confirmerai si j'ai réussi
Bonsoir,
Eve
0
m@rina
Messages postés
17465
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
21 juin 2022
10 928
19 janv. 2009 à 22:46
Bonsoir

Pourquoi ne pas faire une incrémentation automatique de numéro ?... Il n'y aurait pas à gérer ce type d'erreur...
Une idée en passant ! ;)

m@rina
0
evevdll
Messages postés
81
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
51
19 janv. 2009 à 22:54
Bonsoir Marina,
Merci de ta réponse. j'y avais pensé mais s'il fallait modifier une facture validée, j'ai peur qu'on ne puisse pas revenir sur le numéro manuellement. De plus je ne sais pas comment procéder.
Si tu le veux, tu peux noter la procédure car elle pourrait m'être utilse pour plus tard.
je garde les explications que l'on me donne pour éviter de demander trop souvent car j'essaie de m'entrainer seule quand c'est possible.
Bonne soirée,
Eve
0
m@rina
Messages postés
17465
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
21 juin 2022
10 928 > evevdll
Messages postés
81
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009

19 janv. 2009 à 23:20
Bonsoir Eve,

Pour cela, tu aurais créé une feuille cachée qui contiendrait simplement le numéro à incrémenter.
Pour un premier usage, ru mets le numéro à la main, 1 par exemple.

Numero_Fact = [feuille_num!A1]

La macro irait chercher ce numéro et le copierait dans la cellule de la facture qui doit contenir le numéro :

[facture!A5].Value = Numero_Fact


Rien ne t'empêche d'ajouter quelque chose au numéro, une date, une référence...
puis une fois que l'onglet est créé, la macro incrémenterait le numéro dans la feuille cachée. Ce numéro sera prêt pour la facture suivante.

[feuille_num!A1] = [feuille_num!A1]+ 1

Dans ce cas, même si tu veux modifier un numéro d'une facture quelconque, ça ne gêne absolument rien.

m@rina
0
evevdll
Messages postés
81
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
51 > m@rina
Messages postés
17465
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
21 juin 2022

20 janv. 2009 à 00:28
Merci,
Pas mal mais mes numéros seront sous la forme :

E090101 : E pour initiale, 09 pour l'année, 01 pour le mois et 01 pour le numéro à incrémenter

ou alors peut-être :
E09001 : E pour initiale, 09 pour l'année, 001 pour le numéro à incrémenter

J'ai essayé et ça marche mais pas pour ma numérotation personnelle.
Je garderai quand même tes explications.

A bientôt,
Evelyne
0
m@rina
Messages postés
17465
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
21 juin 2022
10 928 > evevdll
Messages postés
81
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009

20 janv. 2009 à 00:44
Re..

Ah ben ça, c'est pas un problème :

[facture!A5].Value = "E" & Format(Now, "yymm") & Format(Numfact, "000")


m@rina
0
evevdll
Messages postés
81
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
51
19 janv. 2009 à 22:50
Rebonsoir,
ça marche mais après avoir cliqué sur ok dans la boite de dialogue, il continue quand même la macro avec le bogue.
Est-il possible d'avoir une boite de dialogue qui propose d'annuler la procédure pour pouvoir revenir sur les valeurs à modifier et redemander la macro ensuite ?
Si c'est le cas, peux-tu m'indiquer la marche à suivre ?
Merci d'avance,
Eve
0
eriiic
Messages postés
24408
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 juin 2022
7 089
19 janv. 2009 à 23:37
Re,

si tu as copier le code tel que je te l'ai mis il s'arrete. Ta macro doit se lancer dans la partie
Else
'Call ton_sub
End If
Il faut enlever la ' pour l'appeler avec call.
Tu dois donc avoir 2 sub :
sub
ma macro
end sub
et
sub
ta macro
end sub

eric
0
evevdll
Messages postés
81
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
51 > eriiic
Messages postés
24408
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 juin 2022

20 janv. 2009 à 00:24
Bonsoir Eric,
ok ça marche avec bien du mal (pourtant logique après avoir compris).
J'ai eu des difficultés car ma macro est très longue et je ne savais pas où placer et convertir pour moi ce que tu m'as donné. J'inscris au fur et à mesure les explications pour des utilisations ultérieures.
Ce que j'ai fait doit être pour toi très facile mais pour moi un langage que je dois décoder.
A bientôt j'espère !
Encore merci
Evelyne
0
evevdll
Messages postés
81
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
51
25 janv. 2009 à 13:33
Bonjour à Marina et Eric,
Je vous remercie de m'avoir aidée avec les macros. Vous avez répondu à mes questions et j'en ai tellement d'autres...
Je n'ai pas encore fini mon classeur et les macros sont pour moi un langage étranger. J'ai encore beaucoup à faire (je sais que pour vous ce serait rapide mais sans connaissance, c'est très difficile). Je vais essayer de me débrouiller un peu seule avant de vous solliciter de nouveau.
Encore merci
Evelyne
0