titi = Sheets("feuil2").Range("c" & (a + m)).Value--
toto = Sheets("Feuil1").Range("F12").Value
If titi = "" Then
Sheets("Feuil2").Range("C" & a + m).Value = toto
Else
If MsgBox("voulez-vous écraser " & titi, vbYesNo) = vbYes Then
Sheets("Feuil2").Range("C" & a + m).Value = toto
End If
End If
If Sheets("feuil2").Range("c" & (a + m)).Value <> "" ThenAfin que ce soit le module de code Attention qui gère la copie ou non.
Attention.Show
Else
v = Sheets("Feuil1").Range("F12").Value
Sheets("Feuil2").Range("C" & (a + m)).Value = v
End If
Option ExplicitJe pensais que definir v as Integer dans la feuille "ThisWorkbook" la définisait partout.
Dim v As Integer
Private Sub Annuler_Click()
Unload Me
Sheets("Feuil1").Select
Range("F3").Select
End Sub
Private Sub Continuer_click()
Unload Me
'v = Sheets("Feuil1").Range("F12").Value
'Sheets("Feuil2").Range("C" & (a + m)).Value = v
GoTo Valider_Click
End Sub
Sheets("Feuil2").Range("C" & (a + m)).Value = Sheets("Feuil1").Range("F12").Valuej'ai l'impression que tu t'égares de plus en plus et que tu t'égares parce que t'échappent encore les rudiments mêmes du développement !
Pour que la variable soit utilisable dans toutes les macros du projet, il faut utiliser l'instruction Public et la variable doit impérativement être placée en tête d'un module standard.
Public X As String Sub Test() X = 10 End Sub Sub LectureX() Msgbox X End Sub
Dim atention As Integer If Sheets("feuil2").Range("c" & (a + m)).Value <> "" Then atention = MsgBox("La cellule : " & "c" & (a + m) & _ " n'est pas vide." & vbclrf & _ "Souhaitez-vous poursuivre ?", _ vbOKCancel) End If If atention = 2 Then 'On Sort de la sub Exit Sub Else Sheets("Feuil2").Range("C" & (a + m)).Value = Sheets("Feuil1").Range("F12").Value End If
Y a t'il une commande qui permet de changer de module de code afin que le programme continue à une certaine ligne de cet autre module (ce que j'essaye de faire à la ligne 14)
If atention = 1 Then 'On Sort de la sub Exit Sub Else Call copierCellule(a, m) msg = addition(a, m) Call afficherMessage(msg) End If End Sub Function addition(a As Double, b As Double) As Double addition = a + b End Function Sub copierCellule(a, m) Sheets("Feuil2").Range("C" & (a + m)).Value = Sheets("Feuil1").Range("F12").Value End Sub Sub afficherMessage(message) MsgBox "Je viens de faire une addition dans un function et le resultat est :" & message End Sub
Option ExplicitJe pense qu'il existe un moyen de ne pas passer par une suite de If mais j'aime bien découvrir de cette façon
Public a As Integer
Public m As Integer
Public v As Integer
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Address() = "$AL$6" Then
Range("G5:AK5").ClearContents
End If
If ActiveCell.Address() = "$AL$5" Then
If Range("E3") = 2012 Then
a = 3
End If
If Range("E3") = 2013 Then
a = 16
End If
If Range("E3") = 2014 Then
a = 29
End If
If Range("F3") = "Janvier" Then
m = 0
End If
If Range("F3") = "Février" Then
m = 1
End If
If Range("F3") = "Mars" Then
m = 2
End If
If Range("F3") = "Avril" Then
m = 3
End If
If Range("F3") = "Mai" Then
m = 4
End If
If Range("F3") = "Juin" Then
m = 5
End If
If Range("F3") = "Juillet" Then
m = 6
End If
If Range("F3") = "Août" Then
m = 7
End If
If Range("F3") = "Septembre" Then
m = 8
End If
If Range("F3") = "Octobre" Then
m = 9
End If
If Range("F3") = "Novembre" Then
m = 10
End If
If Range("F3") = "Décembre" Then
m = 11
End If
v = Sheets("Feuil1").Range("F12").Value
If Sheets("feuil2").Range("c" & (a + m)).Value = "" Then
Sheets("Feuil2").Range("C" & (a + m)).Value = v
Else
If MsgBox("Attention, vous êtes sur le point de détruire des données déja existantes !", vbYesNo) = vbYes Then
Sheets("Feuil2").Range("C" & a + m).Value = v
End If
End If
End If
End Sub
select case Range("F3").value case "Janvier" m=0 case "Février" m=1 case "Mars" m=3 'etc.. End Select 'idem pour ton autre range select case Range("E3").value case 2012 a = 3 case 2013 a = 16 case 2014 a = 29 case else 'aucun de ces cas.. msgbox "error !" end select
If Target.Address = "$AL$6" Then Range("G5:AK5").ClearContents End If
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim arr As Variant 'Tableau contenant la liste de tes mois ( A compléter) arr = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet") If Target.Address() = "$AL$6" Then Range("G5:AK5").ClearContents End If If Target.Address() = "$AL$5" Then '------------------------------------------ ' recherche de l'année '---------------------------------- Select case Range("E3").value case 2012 a = 3 case 2013 a = 16 case 2014 a = 29 case else 'aucun de ces cas.. msgbox "error !" End select '------------------------------------------ ' Recherche du mois dans le tableau '------------------------------------------ Mois = Range("F3").Value On Error GoTo errMonth m = Application.Match(Mois, arr, False) - 1 '------------------------------------------ ' Le reste de ton programme '------------------------------------------ v = Sheets("Feuil1").Range("F12").Value If Sheets("feuil2").Range("c" & (a + m)).Value = "" Then Sheets("Feuil2").Range("C" & (a + m)).Value = v Else If MsgBox("Attention, vous êtes sur le point de détruire des données déja existantes !", vbYesNo) = vbYes Then Sheets("Feuil2").Range("C" & a + m).Value = v End If End If End If '------------------------------------------ ' Code à placer A la fin de ton Sub ' Gestion des "Erreurs" '------------------------------------------ Exit Sub errMonth: ' La valeur n'existe pas dans le tableau MsgBox "Le mois demandé " & Mois & " n'existe pas" Exit Sub End Sub
m = Month("01 " & Range("F3").Text & " 2000") -1(où 2000 pourrait être remplacé par n'importe quel millésime de ce siècle) ?
msgbox m
a = (Range("E3").Value Mod 2012) + 3 + (12 * (Range("E3").Value - 2012))
MsgBox a
a = (13 * (Range("E3").Value - 2012)) + 3
MsgBox a
je ne connais rien au développement ça c'est sûr !
Et donc je n'ai effectivement pas besoin d'un userform puisque tu viens de me faire découvrir MsgBox