Bonjour à tous,
j'ai récemment reçu de l'aide dans mon apprentissage du VBA via ces forums, et je m'en remets une nouvelle fois à vous!
Dans un tableau que j'ai créé, je voudrais via une macro ouvrir une fenêtre de sélection d'options proposée en fonction de la valeur d'une cellule du tableau.
Dans mon code ci-dessous, je voudrais suivant la valeur de la case C30 "Stock" avoir l'affichage d'une message box ou j'utilise la fonction SelectCase pour reporter le choix des options, avec:
- Si "Stock" (C30) = Yes, alors une msgbox s'ouvre avec 3 choix (via vbYesNoCancel):
Garder l'option 1 (bouton Oui de la msgbox) et reporter les valeurs des cases B76:I77; B79:I93 et la cellule C18 en feuille "Product List"
Garder l'option 2 (bouton Non de la msgbox) et reporter les valeurs des cases B76:I76; B78:I93 et la cellule C18 en feuille "Product List"
Garder l'option 3 (bouton Annuler de la msgbox) et reporter les valeurs des cases B76:I76; B79:I93 et la cellule C18 en feuille "Product List"
- Si "Stock" (C30) = No ou Vide, alors msgbox s'ouvre avec 2 choix (via vbYesNo):
Garder l'option 1 (bouton Oui de la msgbox) et reporter les valeurs des cases B77:I77; B79:I93 et la cellule C18 en feuille "Product List"
Garder l'option 2 (bouton Non de la msgbox) et reporter les valeurs des cases B78:I93 et la cellule C18 en feuille "Product List"
Je sis arriver à avoir les bonnes msgbox et report de valeur en les séparant en deux macro, mais je n'arrive pas à les combiner via un If Else Then, et me retrouve avec une message d'erreur "Erreur de Compilation: Else sans If" (image en PJ).
Voici le code actuel que j'ai rédigé:
Voilà, j'espère avoir été assez clair dans ma demande et si quelqu'un sait me le corriger ou me conseiller sur sa mise au point ce serait génial!
Je me tiens à votre disposition pour plus de détails avec grand plaisir!
j'ai récemment reçu de l'aide dans mon apprentissage du VBA via ces forums, et je m'en remets une nouvelle fois à vous!
Dans un tableau que j'ai créé, je voudrais via une macro ouvrir une fenêtre de sélection d'options proposée en fonction de la valeur d'une cellule du tableau.
Dans mon code ci-dessous, je voudrais suivant la valeur de la case C30 "Stock" avoir l'affichage d'une message box ou j'utilise la fonction SelectCase pour reporter le choix des options, avec:
- Si "Stock" (C30) = Yes, alors une msgbox s'ouvre avec 3 choix (via vbYesNoCancel):
Garder l'option 1 (bouton Oui de la msgbox) et reporter les valeurs des cases B76:I77; B79:I93 et la cellule C18 en feuille "Product List"
Garder l'option 2 (bouton Non de la msgbox) et reporter les valeurs des cases B76:I76; B78:I93 et la cellule C18 en feuille "Product List"
Garder l'option 3 (bouton Annuler de la msgbox) et reporter les valeurs des cases B76:I76; B79:I93 et la cellule C18 en feuille "Product List"
- Si "Stock" (C30) = No ou Vide, alors msgbox s'ouvre avec 2 choix (via vbYesNo):
Garder l'option 1 (bouton Oui de la msgbox) et reporter les valeurs des cases B77:I77; B79:I93 et la cellule C18 en feuille "Product List"
Garder l'option 2 (bouton Non de la msgbox) et reporter les valeurs des cases B78:I93 et la cellule C18 en feuille "Product List"
Je sis arriver à avoir les bonnes msgbox et report de valeur en les séparant en deux macro, mais je n'arrive pas à les combiner via un If Else Then, et me retrouve avec une message d'erreur "Erreur de Compilation: Else sans If" (image en PJ).
Voici le code actuel que j'ai rédigé:
VB:
Sub AjoutProd()
Dim Stock As Integer
Dim Retour As Integer
Dim Retour2 As Integer
Stock = ActiveSheet.Range(C30).Value
If Stock = Yes Then
Retour = MsgBox("What film Option Do you want To add To your RfQ" & Chr(13) & Chr(10) & _
"Option 1 - " & ActiveSheet.Range("E77").Value & "mm wide film" & Chr(13) & Chr(10) & _
"Option 2 - " & ActiveSheet.Range("E78").Value & "mm wide film" & Chr(13) & Chr(10) & _
"My Film - " & ActiveSheet.Range("E76").Value & "mm wide film in stock", vbYesNoCancel, "Please Select your film option")
Select Case Retour
Case 6 'Oui
ActiveSheet.Range("B76:I77").Copy
With Sheets("Product List").Range("B" & Rows.Count).End(xlUp).Offset(1)
.PasteSpecial Paste:=xlPasteColumnWidths
.PasteSpecial Paste:=xlPasteValues
End With
ActiveSheet.Range("B79:I93").Copy
With Sheets("Product List").Range("B" & Rows.Count).End(xlUp).Offset(1)
.PasteSpecial Paste:=xlPasteColumnWidths
.PasteSpecial Paste:=xlPasteValues
End With
ActiveSheet.Range("C18").Copy
With Sheets("Product List").Range("A" & Rows.Count).End(xlUp).Offset(1)
.PasteSpecial Paste:=xlPasteValues
End With
Range("C16,C18,C20,C22,C24,C26,C28,D35,D37,D39,D41,D43,D45,C49,C51,C53,C56,C58,C60,C62").ClearContents
Case 7 'Non
ActiveSheet.Range("B76:I76").Copy
With Sheets("Product List").Range("B" & Rows.Count).End(xlUp).Offset(1)
.PasteSpecial Paste:=xlPasteColumnWidths
.PasteSpecial Paste:=xlPasteValues
End With
ActiveSheet.Range("B78:I93").Copy
With Sheets("Product List").Range("B" & Rows.Count).End(xlUp).Offset(1)
.PasteSpecial Paste:=xlPasteColumnWidths
.PasteSpecial Paste:=xlPasteValues
End With
ActiveSheet.Range("C18").Copy
With Sheets("Product List").Range("A" & Rows.Count).End(xlUp).Offset(1)
.PasteSpecial Paste:=xlPasteValues
End With
Range("C16,C18,C20,C22,C24,C26,C28,D35,D37,D39,D41,D43,D45,C49,C51,C53,C56,C58,C60,C62").ClearContents
Case 2 'Annuler
ActiveSheet.Range("B76:I76").Copy
With Sheets("Product List").Range("B" & Rows.Count).End(xlUp).Offset(1)
.PasteSpecial Paste:=xlPasteColumnWidths
.PasteSpecial Paste:=xlPasteValues
End With
ActiveSheet.Range("B79:I93").Copy
With Sheets("Product List").Range("B" & Rows.Count).End(xlUp).Offset(1)
.PasteSpecial Paste:=xlPasteColumnWidths
.PasteSpecial Paste:=xlPasteValues
End With
ActiveSheet.Range("C18").Copy
With Sheets("Product List").Range("A" & Rows.Count).End(xlUp).Offset(1)
.PasteSpecial Paste:=xlPasteValues
End With
Range("C16,C18,C20,C22,C24,C26,C28,D35,D37,D39,D41,D43,D45,C49,C51,C53,C56,C58,C60,C62").ClearContents
Else
Retour2 = MsgBox("What film Option Do you want To add To your RfQ" & Chr(13) & Chr(10) & _
"Option 1 - " & ActiveSheet.Range("E77").Value & "mm wide film" & Chr(13) & Chr(10) & _
"Option 2 - " & ActiveSheet.Range("E78").Value & "mm wide film" & Chr(13) & Chr(10) & _
vbYesNo, "Please Select your film option")
Select Case Retour2
Case 6 'Oui
ActiveSheet.Range("B77:I77").Copy
With Sheets("Product List").Range("B" & Rows.Count).End(xlUp).Offset(1)
.PasteSpecial Paste:=xlPasteColumnWidths
.PasteSpecial Paste:=xlPasteValues
End With
ActiveSheet.Range("B79:I93").Copy
With Sheets("Product List").Range("B" & Rows.Count).End(xlUp).Offset(1)
.PasteSpecial Paste:=xlPasteColumnWidths
.PasteSpecial Paste:=xlPasteValues
End With
ActiveSheet.Range("C18").Copy
With Sheets("Product List").Range("A" & Rows.Count).End(xlUp).Offset(1)
.PasteSpecial Paste:=xlPasteValues
End With
Range("C16,C18,C20,C22,C24,C26,C28,D35,D37,D39,D41,D43,D45,C49,C51,C53,C56,C58,C60,C62").ClearContents
Case 7 'Non
ActiveSheet.Range("B78:I93").Copy
With Sheets("Product List").Range("B" & Rows.Count).End(xlUp).Offset(1)
.PasteSpecial Paste:=xlPasteColumnWidths
.PasteSpecial Paste:=xlPasteValues
End With
ActiveSheet.Range("C18").Copy
With Sheets("Product List").Range("A" & Rows.Count).End(xlUp).Offset(1)
.PasteSpecial Paste:=xlPasteValues
End With
Range("C16,C18,C20,C22,C24,C26,C28,D35,D37,D39,D41,D43,D45,C49,C51,C53,C56,C58,C60,C62").ClearContents
End If
End Sub
Voilà, j'espère avoir été assez clair dans ma demande et si quelqu'un sait me le corriger ou me conseiller sur sa mise au point ce serait génial!
Je me tiens à votre disposition pour plus de détails avec grand plaisir!