Condition

tactic6

XLDnaute Impliqué
Re tout le monde

Voici mon nouveau probleme
Quelles lignes de code dois je mettre au lancement d'une macro pour vérifier si la cellule G6 porte le bon nom (DEVIS ou FACTURE)
 

justine

XLDnaute Occasionnel
Re : Condition

bonsoir le forum, tactic6, kjin
en voila une parmi d'autre

if sheets("nom de la feuille").range("G6").value="DEVIS" or if sheets("nom de la feuille").range("G6").value="FACTURE" then
...
ta macro
...
end if
 

tactic6

XLDnaute Impliqué
Re : Condition

en fait je voudrais avoir un message du genre ceci n'est pas une facture si en G6 j'ai DEVIS et si j'ai cliqué sur la macro enregistrer la facture
et inversement avec la macro devis en ayant FACTURE en G6

je suis sur qu'il y a plus facile en adaptant ma macro mais je suis sur mon PC depuis ce matin et je commence a avoir mal à la tete:D:D
 

kjin

XLDnaute Barbatruc
Re : Condition

Bonsoir,
Ou tu vérifies que tu n'a pas écris facture à la place de devis et là je comprends... ou tu veux vérifier si l'enregistrement est au bon format et là je comprends moins : pourquoi ne récupères tu pas directement la valeur de la cellule G6 pour enregistrer ton fichier avec un bouton unique, plutôt que de vérifier à chaque fois, et de fait une seule macro d'enregistrement suffit.
Ca reste mon avis.
A+
kjin
 

kjin

XLDnaute Barbatruc
Re : Condition

Re,
Si j'ai compris, j'ai un document qui me sert autant pour la facturation que pour les devis et donc juste une liste de validation pour changer l'intitulé du document.
Je me serts ensuite de cette info pour enregistrer dans le bon classeur, avec le bon n°.
Donc une seule macro d'enregistrement.
A+
kjin
 

tactic6

XLDnaute Impliqué
Re : Condition

merci a tous j'ai donc fait comme me le propose justine mais j'obtiens erreur 9
a la ligne
Code:
   If tablo(1, i) = tabloErreur(i) Then Msg = Msg & vbLf & Msg1 & tabloMsg(i) & Msg2

je vous donne le code que certain d'entre vous ont deja participé
si vous pouvez faire quelque chose

Code:
Private Sub CommandButton1_Click()
If ActiveSheet.Range("g6").Value = "DEVIS N°" Then
    MsgBox " cette feuille est un devis, vous ne pouvez l'enregistrer"
    Else
    MsgBox "facture enregistree"

'Sub Enregistrer()
Dim tablo(1, 6)
Dim tabloErreur As Variant
Dim tabloMsg As Variant
Dim tabloFacture As Variant
Dim Msg As String
Dim Msg1 As String
Dim Msg2 As String
Dim F1  As Worksheet
Dim F2 As Worksheet
Dim Derli As Long
Dim i As Integer

 'initialisation des variables
Set F1 = Sheets("Facture")
Set F2 = Sheets("Feuil1")
 ' affectaction des valeurs de cellules au tableau
tablo(1, 1) = F1.[C12]
tablo(1, 2) = F1.[H5]
tablo(1, 3) = F1.[J6]
tablo(1, 4) = F1.[g8]
tablo(1, 5) = F1.[H12]
tablo(1, 6) = F1.[J59]
'Gestion des cellules non renseignées
tabloErreur = Array("", "Date", "")
tabloMsg = Array("nom", "date", "numéro")
Msg1 = "Il n'y a pas de "
Msg2 = ", la facture ne peut pas être enregistrée."
'boucle pour l'affichage des cellules non remplies
For i = 3 To 1 Step -1
  If tablo(1, i) = tabloErreur(i) Then Msg = Msg & vbLf & Msg1 & tabloMsg(i) & Msg2
Next i
'si une condition remplie, affichage du message d'erreur et fin de Sub
If Not Msg = "" Then MsgBox Msg: Exit Sub
' controle ligne TVA
For i = 15 To 52
  If F1.Cells(i, "J").Value <> "" And _
      F1.Cells(i, "K").Value = "" Then _
         MsgBox "la cellule " & Cells(i, "K").Address & " est vide.": End
Next i
'Recherche  de la dernière ligne de l'onglet "Feuil1"
Derli = F2.Columns("A").Find("*", , , , , xlPrevious).Row ' + 1

'Gestion des doublons
tabloFacture = F2.Range("C1:C" & Derli).Value
'si doublon, affichage du message et fin de Sub
If Not IsError(Application.Match(tablo(1, 3), tabloFacture, 0)) Then _
   MsgBox "Le numéro de la facture """ & tablo(1, 3) & """ existe déja!": Exit Sub

'insertion des données sur Feuil1
Derli = Derli + 1
F2.Cells(Derli, "G").Value = Now
F2.Range("A" & Derli & ":F" & Derli).Value = tablo


Const DossierSauvegarde2 As String = "D:\Données\\Sauvegarde\Facture\"
Const DossierSauvegarde3 As String = "E:\Sauvegarde\"
Dim AWbk As Workbook
Dim LaFin As String
Dim Ext As String
Dim NomClasseur As String
Dim Nume As String
Set AWbk = ActiveWorkbook

'nom du classeur sans l'extension
NomClasseur = Left(AWbk.Name, Len(AWbk.Name) - InStr(1, StrReverse(AWbk.Name), "."))
'extension
Ext = Right(AWbk.Name, InStr(1, StrReverse(AWbk.Name), "."))
'date et heure
'LaFin = Format(Now, "dd-mm-yy hh-mm-ss")
'on définit ce que sera Nomfichier
'ce  sera la cellule G3 + H3 de la feuille nommée Facture
Nomfichier = Sheets("Facture").Range("G6") & " " & Sheets("Facture").Range("J6") & " " & Sheets("Facture").Range("g8")
'LaFin = Cells("H8" & "J6").Value
'enregistrement des copies
Nume = [Facture!J6]  ' vérifie j'ai mis J6
Sheets("Feuil1").Copy

ActiveWorkbook.SaveAs DossierSauvegarde & Nomfichier & " " & Ext  ', xlExcel8 ' tu peux supprimer xlExcel8
ActiveWorkbook.Close
Nume = [Facture!J6]
Sheets("Facture").Copy
ActiveWorkbook.SaveAs DossierSauvegarde2 & Nomfichier & " " & Ext ', xlExcel8  ' tu peux supprimer xlExcel8
ActiveWorkbook.SaveAs DossierSauvegarde3 & Nomfichier & " " & Ext


ActiveWorkbook.Close
'If MsgBox("Ouvrir le dossier de sauvegarde ?", vbYesNo) = vbYes Then _
   Shell "C:\WINDOWS\EXPLORER.EXE /n,/e," & ""D:\Données\", vbNormalFocus

'End Sub
End If
End Sub

Private Sub CommandButton2_Click()
If ActiveSheet.Range("g6") = "FACTURE N°" Then
    MsgBox " cette feuille est une facture, vous ne pouvez l'enregistrer"
    Else
    MsgBox "devis enregistre"
'Sub Enregistrer_Devis()
Dim tablo(1, 6)
Dim tabloErreur As Variant
Dim tabloMsg As Variant
Dim tabloFacture As Variant
Dim Msg As String
Dim Msg1 As String
Dim Msg2 As String
Dim F1  As Worksheet
Dim F2 As Worksheet
Dim Derli As Long
Dim i As Integer
 
 'initialisation des variables
Set F1 = Sheets("Facture")
Set F2 = Sheets("Feuil3")
 ' affectaction des valeurs de cellules au tableau
tablo(1, 1) = F1.[C12]
tablo(1, 2) = F1.[H5]
tablo(1, 3) = F1.[J6]
tablo(1, 4) = F1.[H8]
tablo(1, 5) = F1.[H12]
tablo(1, 6) = F1.[J59]

'Gestion des cellules non renseignées
tabloErreur = Array("", "Date", "")
tabloMsg = Array("nom", "date", "numéro")
Msg1 = "Il n'y a pas de "
Msg2 = ", le devis ne peut pas être enregistrée."
'boucle pour l'affichage des cellules non remplies
For i = 3 To 1 Step -1
   If tablo(1, i) = tabloErreur(i) Then Msg = Msg & vbLf & Msg1 & tabloMsg(i) & Msg2
Next i
'si une condition remplie, affichage du message d'erreur et fin de Sub
If Not Msg = "" Then MsgBox Msg: Exit Sub

'Recherche  de la dernière ligne de l'onglet "Feuil1"
Derli = F2.Columns("A").Find("*", , , , , xlPrevious).Row ' + 1


'Gestion des doublons
tabloDevis = F2.Range("C1:C" & Derli).Value
'si doublon, affichage du message et fin de Sub
If Not IsError(Application.Match(tablo(1, 3), tabloDevis, 0)) Then _
   MsgBox "Le numéro du Devis """ & tablo(1, 3) & """ existe déja!": Exit Sub

'insertion des données sur Feuil1
Derli = Derli + 1
F2.Cells(Derli, "I").Value = Now
F2.Range("A" & Derli & ":F" & Derli).Value = tablo


Const DossierSauvegarde2 As String = "D:\Données\Sauvegarde\Devis\"
Const DossierSauvegarde3 As String = "E:\Sauvegarde\"
Dim AWbk As Workbook
Dim LaFin As String
Dim Ext As String
Dim NomClasseur As String
Dim Nume As String
Set AWbk = ActiveWorkbook

'nom du classeur sans l'extension
NomClasseur = Left(AWbk.Name, Len(AWbk.Name) - InStr(1, StrReverse(AWbk.Name), "."))
'extension
Ext = Right(AWbk.Name, InStr(1, StrReverse(AWbk.Name), "."))
'date et heure
'LaFin = Format(Now, "dd-mm-yy hh-mm-ss")
'on définit ce que sera Nomfichier
'ce  sera la cellule G3 + H3 de la feuille nommée Facture
Nomfichier = Sheets("Devis").Range("G6") & " " & Sheets("Devis").Range("J6") & " " & Sheets("Devis").Range("H8")
'LaFin = Cells("H8" & "J6").Value
'enregistrement des copies
Nume = [Devis!J6]
Sheets("Feuil3").Copy
' 'ActiveWorkbook.SaveAs DossierSauvegarde & NomClasseur & " " & LaFin & Ext ', xlExcel8 ' tu peux supprimer xlExcel8
ActiveWorkbook.SaveAs DossierSauvegarde & Nomfichier & " " & Ext  ', xlExcel8 ' tu peux supprimer xlExcel8
ActiveWorkbook.Close
Nume = [Devis!J6]  ' vérifie j'ai mis J6
Sheets("Devis").Copy
ActiveWorkbook.SaveAs DossierSauvegarde2 & Nomfichier & " " & Ext ', xlExcel8  ' tu peux supprimer xlExcel8
ActiveWorkbook.SaveAs DossierSauvegarde3 & Nomfichier & " " & Ext


ActiveWorkbook.Close
'If MsgBox("Ouvrir le dossier de sauvegarde ?", vbYesNo) = vbYes Then _
   Shell "C:\WINDOWS\EXPLORER.EXE /n,/e," & ""D:\Données\", vbNormalFocus

'End Sub
End If
End Sub

lmerci pour aide tant pis si vous y arrivez pas;)
 

tactic6

XLDnaute Impliqué
Re : Condition

Bonjour le forum et les autres

Apparemment le problème vient de l'Userforme dans la formule de Justine.
en le supprimant mais en gardant le code que j'applique à chaque macro ça fonctionne.
Merci encore pour votre aide
Merci Kjin et Justine c'est ton code qui fait tourner ma macro
 

tactic6

XLDnaute Impliqué
Re : Condition

Bonsoir tout le monde

je voudrais supprimer un des deux bouton enregistrer facture ou enregistrer devis par un bouton enregistrer simplement
j'ai commencé à regrouper les deux macros de telle façon qu'en fonction de la valeur de G6 ça enregistre soit une facture soit un devis avec un message de confirmation à repondre par oui ou par non
mais je but sur la ligne de depart
Code:
If ActiveSheet.Range("g6") = "FACTURE N°" And if MsgBox("Voulez vous Enregistrer un devis ?", vbYesNo) = vbYes Then

bien sur plus bas j'aurais le même départ si g6 ="DEVIS N°"

Comment fait on pour avoir 2 conditions à respecter pour dérouler le reste de la macro ?
 

Discussions similaires

Réponses
17
Affichages
968
Réponses
8
Affichages
462

Membres actuellement en ligne

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote