Besoin aide pour macro excel ?
Résolu
tchulio
-
tchulio Messages postés 174 Statut Membre -
tchulio Messages postés 174 Statut Membre -
Bonjour,
je démarre un peu dans la VBA et j'aurais besoin d'un petit coup de main.
j'ai créé une macro excel, qui a pour champs d'action les cellules L5, L6, L7.
Et je voudrais savoir si c'est possible d'insérer une incrémantation automatique après chaque enregistrement de feuille, je précise:
Quand j'ouvre mon tableau les actions s'appliquent sur les cellules L5,L6,L7 et je voudrais qu'après enregistrement de la feuille elle s'appliquent sur les cellules L8,L9,L10 ainsi de suite.
Est-ce possible?
Merci beaucoup de votre aide, parce que je galère un peu là
:)
je démarre un peu dans la VBA et j'aurais besoin d'un petit coup de main.
j'ai créé une macro excel, qui a pour champs d'action les cellules L5, L6, L7.
Et je voudrais savoir si c'est possible d'insérer une incrémantation automatique après chaque enregistrement de feuille, je précise:
Quand j'ouvre mon tableau les actions s'appliquent sur les cellules L5,L6,L7 et je voudrais qu'après enregistrement de la feuille elle s'appliquent sur les cellules L8,L9,L10 ainsi de suite.
Est-ce possible?
Merci beaucoup de votre aide, parce que je galère un peu là
:)
Configuration: Windows Vista Internet Explorer 7.0
11 réponses
-
les cellules L5-6-7 sont vides?
tu les remplis et il faut que la macro attende que les cellules 8-9-10 soient remplies? -
exact L5-6-7 sont vides, puis une fois qu'elle sont remplie et que j'enregistre, je voudrais que la marco agisse sur sur L8-9-10, ainsi de suite.
Merci de ta réponse -
-
personne n'aurait la solution alors :(
J'aimerais bien finir ce tableau pour la reprise du travail lundi....
MErci de vos conseils -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
bonjour
Pour ne pas être bloqué avec L5/L7, je te propose de nommer ta plage, par exemple "action" et de l'utiliser dans ta macro.
Comme "après chaque enregistrement de feuille", tu veux passer 3 lignes plus bas, tu mets cette macro dans thisworkbook et lorsque tu va sauver ta plage d'action va se décaler de 3 lignes si j'ai compris ta problématique.Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim i As Integer Dim l As Long l = 5 For i = 1 To ActiveWorkbook.Names.Count If ActiveWorkbook.Names(i).Name = "action" Then l = Range(ActiveWorkbook.Names(i)).Row End If Next i ActiveWorkbook.Names.Add Name:="action", RefersToR1C1:= _ "=Feuil1!R" & l + 3 & "C12:R" & l + 6 & "C12" End Sub -
-
j'ai essayé de joindre ta macro aujourd'hui au boulot, cf:
bonjour
Pour ne pas être bloqué avec L5/L7, je te propose de nommer ta plage, par exemple "action" et de l'utiliser dans ta macro.
Comme "après chaque enregistrement de feuille", tu veux passer 3 lignes plus bas, tu mets cette macro dans thisworkbook et lorsque tu va sauver ta plage d'action va se décaler de 3 lignes si j'ai compris ta problématique.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim i As Integer
Dim l As Long
l = 5
For i = 1 To ActiveWorkbook.Names.Count
If ActiveWorkbook.Names(i).Name = "action" Then
l = Range(ActiveWorkbook.Names(i)).Row
End If
Next i
ActiveWorkbook.Names.Add Name:="action", RefersToR1C1:= _
"=Feuil1!R" & l + 3 & "C12:R" & l + 6 & "C12"
End Sub
_______________________________________________________________
Je l'ai placé dans comme tu m'a dit dans "thisworkbook", mais a ce que je comprend, il ne reconnait pas la plage d'action.
Pourrais tu juste me nommé ma plage d'action sur ma macro si ce n'est pas trop te demander?? ;)
Voici ma macro =>
Private Sub CheckBox1_Click()
End Sub
Private Sub CheckBox2_Click()
End Sub
Private Sub UserForm_Activate()
' Remplace la propriéte TripleState mise à True
CheckBox1.Value = Null
CheckBox2.Value = False
CheckBox3.Value = False
End Sub
Private Sub OK_Click()
Dim Langue1 As String
Dim Langue2 As String
Dim Langue3 As String
If CheckBox1.Value = False Then
Langue1 = ""
Else
Langue1 = "X"
End If
If CheckBox2.Value = False Then
Langue2 = ""
Else
Langue2 = "X"
End If
If CheckBox3 = False Then
Langue3 = ""
Else
Langue3 = "X"
End If
CasesACocher.Hide
Range("L5").Value = Langue1
Range("L6").Value = Langue2
Range("L7").Value = Langue3
Range("A1").Select
End Sub
Private Sub Annuler_Click()
CasesACocher.Hide
End Sub
(LA PLAGE D'ACTION ETANT DANS L5-L6-L7)
Merci de tout coeur...
J'étais vraiment bloqué... il ne me reste plus que ce petit détail...Merci -
tu peux essayer un truc tout simple comme ca :
sub tonoeuvre()
dim i as integer, myvar as string
' tu testes si L5 est vide
i=5
myvar = range("L" & i).value
'tu peux aussi tester la derniere cellule de ta plage
myvar = range("L" & i+3).value
ca depend de ce que tu entends faire car je n ai pas compris ce que tu entendais par incrementer
tu peux aussi terster tes cellules par un do while
myvar = range("L" & i).value
do while myvar <>"" -
bonjour
La plage se nomme bien automatiquement mais il faut sauver le fichier pour cela.
Pour utiliser la macro de décalage, il faut sauver ton fichier puis tu remplaces ces 3 lignes
Range("L5").Value = Langue1
Range("L6").Value = Langue2
Range("L7").Value = Langue3
par
Range("action").Cells(1, 1).Value = Langue1
Range("action").Cells(2, 1).Value = Langue2
Range("action").Cells(3, 1).Value = Langue3
Ainsi à chaque fois que tu vas sauver ton classeur ta plage d'action sera décalée de 3 lignes, et il me semble que c'était le but ?
Quand j'ouvre mon tableau les actions s'appliquent sur les cellules L5,L6,L7 et je voudrais qu'après enregistrement de la feuille elle s'appliquent sur les cellules L8,L9,L10 ainsi de suite. -
Exact.
Tu as tout bien compris ;)
J'essaye tout de suite
merci -
toujours quelques petits souci .... :(
Si tu veux je peux t'envoyer le fichier par mail ?
Il y a cette ligne qui se met en surbrillance =>
l = Range(ActiveWorkbook.Names(i)).Row
Dis moi si tu veux que je t'envoie le fichier?
Ce doit être un tout petit détail... Merci...
Si des fois, voici mon adresse => jtassetti@bluewin.ch
Je reviens vers 19h.
a+