Mettre du code répétitif en fonction
Résolu
HugoHerbomez
Messages postés
59
Statut
Membre
-
HugoHerbomez Messages postés 59 Statut Membre -
HugoHerbomez Messages postés 59 Statut Membre -
Bonjour,
Je suis actuellement en train d'essayer de mettre mon code sous la forme d'une fonction. Mon problème étant que je ne rentre même pas dans la fonction! Et mes données ne sont donc bien sûr pas changée. Au passage ma fonction "inc" ne fonctionne pas non plus.
Voici le code que je voudrais mettre en fonction :
J'ai donc essayé un peu et j'avais fait ça :
Merci
Bien cordialement,
Hugo
Je suis actuellement en train d'essayer de mettre mon code sous la forme d'une fonction. Mon problème étant que je ne rentre même pas dans la fonction! Et mes données ne sont donc bien sûr pas changée. Au passage ma fonction "inc" ne fonctionne pas non plus.
Voici le code que je voudrais mettre en fonction :
Dim rng As range
Dim anneeS As String, semaineS As String
Dim i As Integer
Private sub ....
....
With ActiveSheet
Select Case .Name
Case "Matin"
i = 11
'Cherche l'année
While StrComp(.Range("I" & i + 1 & "").Value, anneeS) = 1
inc i, 29
Wend
'Cherche la semaine associée à l'année si elel est indiquée
If Len(dateS) = 7 Then
If Len(.Range("I" & i & "").Value) = 1 And Len(semaineS) = 2 Then
semaineS = Mid(semaineS, 2, 1)
End If
While StrComp(.Range("I" & i & "").Value, semaineS) = 1
inc i, 29
If Len(.Range("I" & i & "").Value) = 1 And Len(semaineS) = 2 Then
semaineS = Mid(semaineS, 2, 1)
End If
Wend
End If
'Copie
Set rng = .Range("A" & i & ":J" & i & "", "A" & i & ":A" & i + 28 & "")
End With
....
End Sub
Private Sub inc(ByRef i As Integer, ByVal nb As Integer)
i = i + nb
End Sub
J'ai donc essayé un peu et j'avais fait ça :
'Mon search est dans la fonction du code au dessus
i = 11
search rng, anneeS, semaineS, i
Private sub search (rng As range, ByVal anneeS As String, ByVal semaineS As String, ByRef i As Integer)
'Cherche l'année
While StrComp(.Range("I" & i + 1 & "").Value, anneeS) = 1
inc i, 29
Wend
'Cherche la semaine associée à l'année si elel est indiquée
If Len(dateS) = 7 Then
If Len(.Range("I" & i & "").Value) = 1 And Len(semaineS) = 2 Then
semaineS = Mid(semaineS, 2, 1)
End If
While StrComp(.Range("I" & i & "").Value, semaineS) = 1
inc i, 29
If Len(.Range("I" & i & "").Value) = 1 And Len(semaineS) = 2 Then
semaineS = Mid(semaineS, 2, 1)
End If
Wend
End If
'Copie
Set rng = .Range("A" & i & ":J" & i & "", "A" & i & ":A" & i + 28 & "")
End With
End sub
Merci
Bien cordialement,
Hugo
A voir également:
- Mettre du code répétitif en fonction
- Code ascii - Guide
- Fonction si et - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
2 réponses
Bonjour,
Ne pas confondre FONCTIONS et ROUTINES ... autrement dit :
function et Sub
=> Transforme ta SUB INC en function inc(....)
Ne pas confondre FONCTIONS et ROUTINES ... autrement dit :
function et Sub
=> Transforme ta SUB INC en function inc(....)
Je vais bien réécrire mon problème.
Alors pour l'instant j'ai ça, mais je n'entre même pas dans la fonction car la cellule 'A1' ne me donne même pas '1'. Et bien sûr je n'ai pas la range que je veux dans la variable 'rng'. Comment faire pour entrer dans cette satanée fonction? Le problème est-il au niveau de l'adressage?
De plus, la fonction doit être déclarée avec la feuille ou autre part?
Merci beaucoup
Bien cordialement,
Hugo
Alors pour l'instant j'ai ça, mais je n'entre même pas dans la fonction car la cellule 'A1' ne me donne même pas '1'. Et bien sûr je n'ai pas la range que je veux dans la variable 'rng'. Comment faire pour entrer dans cette satanée fonction? Le problème est-il au niveau de l'adressage?
Private Sub CommandButton1_Click()
Dim rng As Range
Dim i As Integer
moisS As String, anneeS As String
...
i = 12
'Copier les 11 dernières interventions
Set rng = search(anneeS, moisS, i)
...
End Sub
'Et la fonction
Function search(ByVal anneeS As String, ByVal moisS As String, ByRef i As Integer) As Range
Range("A1") = 1
Dim inc As Integer
inc = 2
While StrComp(Year(CDate(Range("B" & i & "").Value)), anneeS) = 1
i = i + inc
Wend
If Len(dateS) = 7 Then
While StrComp(month(CDate(Range("B" & i & "").Value)), moisS) = 1 And Len(month(CDate(Range("B" & i & "").Value))) = 2 And StrComp(Year(CDate(Range("B" & i & "").Value)), anneeS) = 0
i = i + inc
Wend
If moisS < 10 Then
moisS = Mid(moisS, 2, 1)
While StrComp(month(CDate(Range("B" & i & "").Value)), moisS) = 1 And StrComp(Year(CDate(Range("B" & i & "").Value)), anneeS) = 0
i = i + inc
Wend
End If
End If
search = Range("B" & i & ":L" & i + 10 * 2 + 1 & "")
End Function
De plus, la fonction doit être déclarée avec la feuille ou autre part?
Merci beaucoup
Bien cordialement,
Hugo
Merki !
Tu pourrais me donner un exemple s'il te plait? Si possible avec mon code!
Merci beaucoup