Macro de synthèse après déclenchement touche

Résolu
Edaine Messages postés 63 Statut Membre -  
Edaine Messages postés 63 Statut Membre -
Bonjour,

J'ai créé un fichier avec 5 feuilles et diverses macros,

Dans la feuille "Douchette" j'ai un numéro qui s'inscrit automatiquement; grâce à une macro; en colonne A, à la suite de cette macro et en fonction des diverses données rentrées par l'utilisateur, j'ai les colonnes R,S,T,U,V et W qui affichent divers chiffres.

J'aimerai que lorsque j'appuie sur F8,

La somme de la colonne R s'incrive dans la cellule D10
La somme de la colonne S s'incrive dans la cellule E10
La somme de la colonne T s'incrive dans la cellule F10
La somme de la colonne U s'incrive dans la cellule G10
La somme de la colonne V s'incrive dans la cellule H10
La somme de la colonne W s'incrive dans la cellule I10


Mais si il y a déjà une valeur dans la cellule D10 alors je veux qu'il écrive dans la ligne suivante..


Un calvaire à écrire pour moi débutante en vba ..

Je ne sais pas par où commencer excepter .."Sub"... :s

Merci d'avance !

J'ai cru voir une piste dans le Keyup ou le Keydown mais les règles d'écritures ne me sont toujours pas familières ..

16 réponses

  1. melanie1324 Messages postés 1561 Statut Membre 156
     
    Bonjour,

    je ne sais pas l'associer à un bouton mais voici la macro que tu demandes :

    sub somme

    i = 1 'si ton tableau commence en ligne 2, mets i=2
    do while cells(i,4)<>"" 'va chercher la première ligne vide en colonne D, il ne faut pas que tu ais de trou
    i=i+1
    loop
    cells(i,4).Select
    ActiveCell.FormulaR1C1 = "=SUM(R1C:R" & i -1 & "C)"
    cells(i,4).copy
    range(cells(i,4),cells(i,9)).select
    activesheet.paste
    cells(1,1).select
    end sub
    0
  2. Edaine Messages postés 63 Statut Membre
     
    MErci pour la réponse,

    Qu'est-ce que tu entends par " il ne faut pas qu'il y ait de trou ? "

    En faite je peux sur une ligne avoir des trous et des valeurs :s
    0
  3. melanie1324 Messages postés 1561 Statut Membre 156
     
    do while cells(i,4)<>"" 'va chercher la première ligne vide en colonne D, il ne faut pas que tu ais de trou
    i=i+1
    loop

    signifie je regarde la ligne i et la colonne 4 si elle est vide.
    Si elle est pleine, elle passe à la ligne suivante.
    si la ligne i+1 et la colonne 5 est vide, la macro s'arrête.

    si tu as un tableau qui est :

    1
    vide
    3
    4
    vide

    la boucle s'arrêtera en 2ème ligne et fera ta somme en 2è ligne
    par contre, si tu as :
    1
    2
    3
    4
    5
    vide
    vide
    vid

    la macro s'arrête en ligne 6 et fera ta somme en ligne 6.

    Donc si tu as des trous en colonne4 (D), choisis une autre colonne ou tu es sure que tu n'as pas de trou. sinon, je sais pas faire.
    0
  4. Edaine Messages postés 63 Statut Membre
     
    Ah d'accord !

    Désolée j'avais pas bien compris !

    je vais essayer ça :)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Edaine Messages postés 63 Statut Membre
     
    En faite ça ne fonctionne pas du tout :s

    J'essaie de "triturer" la macro en vain ...
    0
  7. melanie1324 Messages postés 1561 Statut Membre 156
     
    bonjour,

    as-tu compris ce que faisait la boucle au moins??
    Mets ce code et appuies sur F8, tu comprendras mieux ce qu'elle fait:

    sub somme

    'permet de trouver la première ligne vide de la colonne 4
    i = 1 'si ton tableau commence en ligne 2, mets i=2
    do while cells(i,4)<>"" 'va chercher la première ligne vide en colonne D, il ne faut pas que tu ais de trou
    cells(i,4).select
    i=i+1
    loop

    'lorsque la ligne est vide, il te mets la somme
    cells(i,4).Select
    ActiveCell.FormulaR1C1 = "=SUM(R1C:R" & i -1 & "C)"
    cells(i,4).copy
    range(cells(i,4),cells(i,9)).select
    activesheet.paste
    cells(1,1).select
    end sub
    0
  8. Edaine Messages postés 63 Statut Membre
     
    oui justement,

    Ca ne fait pas du tout ce que j'attendai ^^

    Il faut que je fasse le lien entre les différentes feuilles au niveau du code et je rame..
    0
  9. Edaine Messages postés 63 Statut Membre
     
    La boucle fonctionen très bien
    0
  10. melanie1324 Messages postés 1561 Statut Membre 156
     
    Explique moi ce que tu veux qu'elle fasse en me donnant un exemple.

    je n'ai aps accès à cijoint donc fait le à la barbare comme je l'ai fait.
    0
  11. Edaine Messages postés 63 Statut Membre
     
    en appuyant sur F8 :

    La somme de la colonne R s'incrive dans la cellule D10
    La somme de la colonne S s'incrive dans la cellule E10
    La somme de la colonne T s'incrive dans la cellule F10
    La somme de la colonne U s'incrive dans la cellule G10
    La somme de la colonne V s'incrive dans la cellule H10
    La somme de la colonne W s'incrive dans la cellule I10

    Mais si il y a déjà une valeur dans la cellule D10 alors je veux qu'il écrive dans la ligne suivante..

    Par exemple si

    Sur la feuille "Douchette" j'ai trois ligne contenant le chiffre 1 en colonne R alors,

    je veux que sur la feuille "Feuille de contrôle" soit inscrit 3 en D10

    Ainsi de suite ..

    et si j'ai déjà une entrée dans la ligne d'arrivée, je passe à D11
    0
  12. melanie1324 Messages postés 1561 Statut Membre 156
     
    Bonjour,

    j'ai compris.

    sub somme

    'permet de trouver la première ligne vide de la colonne 4
    i = 10 'si ton tableau commence en ligne 2, mets i=2
    do while cells(i,4)<>"" 'va chercher la première ligne vide en colonne D, il ne faut pas que tu ais de trou
    cells(i,4).select
    i=i+1
    loop

    'lorsque la ligne est vide, il te mets la somme
    cells(i,4).Select
    ActiveCell.FormulaR1C1 = "=SUM(C18:C18)"
    cells(i,4).copy
    range(cells(i,4),cells(i,9)).select
    activesheet.paste
    cells(1,1).select
    end sub
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonsoir tout le monde,

      une autre façon pour obtenir la ligne de la dernière cellule remplie de la colonne A (avec ou sans trou) :
      lig=[A65536].end(xlup).row
      et faire +1 pour avoir la ligne en dessous qui est libre
      (.end(xlup) est équivalent au raccourci clavier ctrl+fleche haut)

      S'il risque d'y avoir plus 65536 lignes et qu'excel 2007-2010 peut être utilisé :
      Cells([A:A].Cells.Count, 1).End(xlUp).Row + 1
      est compatible toutes versions d'excel

      eric
      0
    2. melanie1324 Messages postés 1561 Statut Membre 156
       
      Sub somme()

      'permet de trouver la première ligne vide de la colonne 4
      i = 10 'si ton tableau commence en ligne 2, mets i=2
      Do While Cells(i, 4) <> "" 'va chercher la première ligne vide en colonne D, il ne faut pas que tu ais de trou
      Cells(i, 4).Select
      i = i + 1
      Loop


      'lorsque la ligne est vide, il te mets la somme
      Cells(i, 4).Select
      ActiveCell.FormulaR1C1 = "=SUM(C[14])"
      Cells(i, 4).Copy
      Range(Cells(i, 4), Cells(i, 9)).Select
      ActiveSheet.Paste
      Cells(1, 1).Select
      End Sub
      0
  13. Edaine Messages postés 63 Statut Membre
     
    Le truc pour passer de la ligne vide à la prochaine fnoctionen très bien !

    Par contre je voudrais faire les sommes en passant de feuille à feuille :s

    Sur la feuille 2 j'ai mes colonnes R..S... etc
    Sur la feuille 1 je veux les sommes de ces colonnes,

    le code que tu m'as donné est :

    Cells(i, 4).Select
    ActiveCell.FormulaR1C1 = "=SUM(C[14])"
    Cells(i, 4).Copy
    Range(Cells(i, 4), Cells(i, 9)).Select
    ActiveSheet.Paste
    Cells(1, 1).Select
    End Sub

    Mais là tout se fait sur la même feuille :s

    J'ai essayé de modifié en mettant des

    Sheets("DOuchette").Cells(....)

    Mais rien n'y fait, je n'ai toujours pas compris les conventions d'écritures ! :x
    0
  14. melanie1324 Messages postés 1561 Statut Membre 156
     
    re,

    on va y arriver :

    Sub somme()

    'permet de trouver la première ligne vide de la colonne 4
    i = 10 'si ton tableau commence en ligne 2, mets i=2
    Do While Cells(i, 4) <> "" 'va chercher la première ligne vide en colonne D, il ne faut pas que tu ais de trou
    Cells(i, 4).Select
    i = i + 1
    Loop

    Cells(i, 4).Select
    ActiveCell.FormulaR1C1 = "=SUM(douchettes!C[14])"
    Cells(i, 4).Copy
    Range(Cells(i, 4), Cells(i, 9)).Select
    ActiveSheet.Paste
    Cells(1, 1).Select
    End Sub
    0
  15. Edaine Messages postés 63 Statut Membre
     
    Ca fonctionne !

    Plus qu'à "fixer" la feuille d'arrivée ^^ Pour que ça se mette toujours dans la même !

    Merci beaucoup pour ta patience :)

    Merci merci !
    0
  16. melanie1324 Messages postés 1561 Statut Membre 156
     
    Pour ca :

    Sub somme()

    sheets("Feuille de controle").select

    'permet de trouver la première ligne vide de la colonne 4
    i = 10 'si ton tableau commence en ligne 2, mets i=2
    Do While Cells(i, 4) <> "" 'va chercher la première ligne vide en colonne D, il ne faut pas que tu ais de trou
    Cells(i, 4).Select
    i = i + 1
    Loop

    Cells(i, 4).Select
    ActiveCell.FormulaR1C1 = "=SUM(douchettes!C[14])"
    Cells(i, 4).Copy
    Range(Cells(i, 4), Cells(i, 9)).Select
    ActiveSheet.Paste
    Cells(1, 1).Select
    End Sub
    0
  17. Edaine Messages postés 63 Statut Membre
     
    j'ai écris comme ça ^^

    Sub Somme()
    
    'permet de trouver la première ligne vide de la colonne 4
    i = 10 'si ton tableau commence en ligne 2, mets i=2
    
    Do While Cells(i, 4) <> "" 'va chercher la première ligne vide en colonne D, il ne faut pas que tu ais de trou
    Cells(i, 4).Select
    i = i + 1
    Loop
    
    Cells(i, 4).Select
    ActiveCell.FormulaR1C1 = "=SUM(Douchette!C[14])"
    Cells(i, 4).Copy
    Range(Cells(i, 4), Cells(i, 9)).Select
    Sheets("Feuille de contrôle").Paste
    Cells(1, 1).Select
    
    End Sub
    0
    1. melanie1324 Messages postés 1561 Statut Membre 156
       
      mais rajoutes cette ligne après le sub :
      sheets("Feuille de controle").select
      0
    2. Edaine Messages postés 63 Statut Membre
       
      D'ac' !
      0