Macro Excel 2007

Résolu
evevdll Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   -  
evevdll Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   - 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
A voir également:

4 réponses

eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 264
 
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   Statut Membre Dernière intervention   51
 
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 22990 Date d'inscription   Statut Contributeur Dernière intervention   11 440
 
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   Statut Membre Dernière intervention   51
 
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 22990 Date d'inscription   Statut Contributeur Dernière intervention   11 440 > evevdll Messages postés 81 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   51 > m@rina Messages postés 22990 Date d'inscription   Statut Contributeur Dernière intervention  
 
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 22990 Date d'inscription   Statut Contributeur Dernière intervention   11 440 > evevdll Messages postés 81 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   51
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 264
 
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   Statut Membre Dernière intervention   51 > eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention  
 
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   Statut Membre Dernière intervention   51
 
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