MsgBox dans une macro

lenul78570

XLDnaute Nouveau
Bonjour,
Je débute en VBA, avec pas mal de recherche et d'essais j'ai pu écrire le code ci-dessous.... J'imagine que pour le même résultat on peut faire beaucoup mieux mais au moins il fonctionne !
Là ou je bloque depuis 2 jours c'est pour insérer comme je l'explique dans la macro ces 2 MsgBox....
Cette macro copie une plage de cellule sur une feuille d'un classeur, elle ouvre ensuite un autre classeur qui à 12 feuilles (janvier à décembre).
Je veux que lorsque ce classeur est ouvert l'utilisateur choisisse un mois, que la macro ouvre la feuille correspondante et poursuive.
Une fois la copie de la ligne ou des lignes effectuées et avant que ce classeur se ferme je veux que l'utilisateur soit obligé de saisir dans la colonne A et pour chacune des nouvelles lignes un numéro.
Quand cette saisie est effectuée, suite et fin de la macro
Merci de votre aide
Lenul
Code:
Sub CopieVersDevisGénéral()
'
' CopieVersDevisGénéral Macro
'

'
    Dim dlv As Long
    
    Range("A15:CE40").Select
    Selection.Copy
    Workbooks.Open(Filename:="T:\Tableau Devis SF\2010-Devis général.xls"). _
        RunAutoMacros Which:=xlAutoOpen
'mettre msgbox pour choisir mois (janvier ou février ou ...) quand
'le mois est choisis, relancer macro qui doit ouvrir la feuille
'"mois" choisis et poursuivre avec la ligne ci-dessous
    dlv = Range("a65536").End(xlUp).Offset(1, 0).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
'mettre msgbox pour que l'utilisateur inscrive numéro de devis
'dans la colone A de la ou des lignes ajoutées, quand le ou les
'numéros de devis sont saisis, relancer macro
    ActiveWorkbook.Save
    ActiveWindow.Close
    Selection.ClearContents
    Range("A15:E15").Select
    Sheets("Saisie").Select
    ActiveWindow.SelectedSheets.Visible = False
    Range("A11").Select
End Sub
 
D

Denis

Guest
Re : MsgBox dans une macro

bonjour lenull et le Forum
essais ce bout de code (pas testé !) il devrait fonctionner comme tu le désires.

Option Explicit
Dim Message, Ws, Wb, Ligne, i%

Sub CopieVersDevisGénéral()
Application.ScreenUpdating = False
Wb = "2010-Devis général.xls"

Message = Application.InputBox("Entrer le mois en chiffres (de 1 à 12)", "Sélection du mois", Type:=1)
If Message = "" Or Message > 12 Then
Application.ScreenUpdating = True
Exit Sub
End If

Workbooks.Open(Filename:="T:\Tableau Devis SF\" & Wb). _
RunAutoMacros Which:=xlAutoOpen

Ws = (Message)

Ligne = Workbooks(Wb).Sheets(Ws).Range("a65536").End(xlUp).Offset(1, 0)
' dans la ligne ci-dessous, tu remplace le 1 de ThisWorkbook.Sheets("1") par ton nom de feuille
With Workbooks(Wb).Sheets(Ws)
.Range("A" & Ligne & ":CE" & Ligne + 25) = ThisWorkbook.Sheets("1").Range("A15:CE40")
For i = Ligne To Ligne + 25
' dans la ligne ci-dessous remplace le A du range par un n° de colonne où il y a des infos
If .Range("A" & i) <> "" Then
LeMessage
If Message = "" Then
MsgBox "Vous devez rentrer une valeur", vbOKOnly, "Numéro du Devis"
LeMessage
End If
.Range("A" & i) = Message
End If
Next
End With
Workbooks(Wb).Close True
ThisWorkbook.Sheets("Saisie").Activate
Application.ScreenUpdating = True

End Sub

Sub LeMessage()
Message = Application.InputBox("Entrer le numéro du Devis", "Numéro du Devis", Type:=1)
End Sub

bon courage et à +
Denis
 

lenul78570

XLDnaute Nouveau
Re : MsgBox dans une macro

Bonjour Denis

Merci de ton aide.

Pour tester ce bout de code je doit le placer dans le classeur de départ comme une macro dans un module ? dans Thisworkbook ? ou dans worksheet de la feuille de départ "Saisie".
Quand tu écris ceci:
' dans la ligne ci-dessous remplace le A du range par un n° de colonne où il y a des infos
Tu parles de quelle feuille dans quel classeur?

Lenul
 
D

Denis

Guest
Re : MsgBox dans une macro

re bonjour
tu places ce code dans un module.
Pour la colonne A, je parle de la feuille sur laquelle on vient de coller les infos. c'est pour éviter d'aller mettre un n° de devis sur des lignes vides.
Bon courage et bon week-end
Denis
 

Discussions similaires

Statistiques des forums

Discussions
312 527
Messages
2 089 355
Membres
104 136
dernier inscrit
redzzo