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 !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPour 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
16 févr. 2014 à 23:56
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