Besoin aide pour macro excel ?

Résolu
tchulio -  
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à
:)
Configuration: Windows Vista
Internet Explorer 7.0

11 réponses

  1. ego
     
    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?
    0
  2. tchulio
     
    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
    0
  3. tchulio
     
    personne n'aurait la solution alors :(

    J'aimerais bien finir ce tableau pour la reprise du travail lundi....

    MErci de vos conseils
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
    0
  6. tchulio
     
    C'est parfait je te remercie :)

    t'es un dieu pour moi!!
    0
  7. tchulio Messages postés 174 Statut Membre 1
     
    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
    0
  8. ego
     
    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 <>""
    0
  9. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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.
    0
  10. tchulio Messages postés 174 Statut Membre 1
     
    Exact.

    Tu as tout bien compris ;)

    J'essaye tout de suite
    merci
    0
  11. tchulio Messages postés 174 Statut Membre 1
     
    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+
    0