Selection de ligne dans tableau.

Résolu
jen_peplu Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   -  
jen_peplu Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Comment dans un tableau range (« J1 :Q24 »), puis-je sélectionner les lignes une par une pour les soustraire aux cellules d'une colonne range (« T1 :T24 ») ?
Par exemple, sélectionner la ligne 1 (« J : Q ») soustraire le total de la cette zone à la cellule (« T1 »)
Ensuite, sélectionner la ligne 2 (« J : Q ») soustraire le total de la cette zone à la cellule (« T2 »)
Etc. Etc. Etc.
En sachant que le tableau comporte des cellules vides.

Merci d'avance à celui qui répondra.

8 réponses

  1. charly_rom Messages postés 574 Statut Membre 103
     
    =T1-SOMME(A1:Q1)
    ensuite tu selectionne la cellule et ds l'encadrement en bas a droite de cette cellule, tu as un point, tu clique dessus et tu descent jusqu'a la derniere ligne et excel se charge de remplacer les 1 par les numero de ligne correspondant
    0
  2. jen_peplu Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonsoir charly_rom,

    Tu traites le tableau directement dans excel ?
    Ce que je veux, c'est créer une macro. Il me faut arriver à sélectionner une ligne du tableau pour en connaitre la somme, ensuite déduire ce résultat d'une cellule en vis à vis plus loin dans une colonne, lorsque je saurai faire cela, je l'inserrerai dans une boucle, "For...Each", par exemple.

    Merci.
    0
  3. jen_peplu Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
     
    J'ai avancé dans ma réalisation mais je bloque sur une erreur incompatibilité de type Erreur d'exécution "13 ".
    Je sélectionne les cellules une par une dans mon tableau, puisque je n'arrive pas à le faire avec une ligne comme je le voulais au début du sujet, mais je n'arrive pas à les soustraire à la cellule en vis-à-vis dans la colonne concerné.
    Je joins le code si quelqu'un peu m'aider...

    Sub op()
    Dim Quinc As Range
    Dim cellule As Range
    Dim sto As Range

    Set sto = Range("Stock") `colonne ("T1:T24")
    Set Quinc = Range("QuincaillesUtilises") `zone (" J1 :Q24")

    For Each cellule In Quinc
    If cellule.Value > 0 Then
    cellule.Select `cellule > 0 dans " J1 :Q24" sélectionnée
    sto(cellule.row, sto.Column - 19).Select `cellule dans " T1:T24" sélectionnée jusque là ça marche

    sto.Value = sto.Value - cellule.Value `ici l'erreur est générée

    End If
    Next cellule

    Set Quinc = Nothing
    Set sto = Nothing

    End Sub

    Je cherche mais j'ai vraiment besoin d'aide...
    Dans ma ligne < sto.Value = sto.Value - cellule.Value > "cellule.value" contient bien une valeur mais pas "sto.value", comment faire ?
    Merci.
    0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    bonjour

    peut être quelque chose comme ça

    Const lideb = 1
    Const lifin = 24
    Const codeb = "J"
    Const cofin = "Q"
    Dim li As Long
    For li = lideb To lifin
      Range("T" & li).Value = Range("T" & li).Value - Application.WorksheetFunction.Sum(Range(codeb & li & ":" & cofin & li))
    Next li


    bonne suite
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    essaies si j'ai pigé ta demande

    Option Explicit
    Sub soustraire()
    Dim lig As Byte
    Application.ScreenUpdating = False
    For lig = 1 To 24
    Cells(lig, "T") = Cells(lig, "T") - Application.Sum(Range(Cells(lig, "J"), Cells(lig, "Q")))
    Next
    End Sub
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bonjour ccm
      excuses moi je n'avais pas rafraichi!!!
      :o)
      0
  7. jen_peplu Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour ,

    Je tiens à vous remercier, ccm81 et michel_m, pour vos réponses qui fonctionnent l'une comme l'autre.
    Cela me permet de voir que l'on peut coder de différentes façons, et le savoir ne nuit pas.

    Si je peux me permettre michel_m, ne faut-il pas mettre "Application.ScreenUpdating = True " quand la procédure est finie ?

    Pourriez-vous me dire, si ce n'est trop, où est le problème dans ma procédure et comment aurais-je dû faire pour que mon opération se fasse, histoire d'en apprendre un peu plus ?

    S'il n'y a pas de réponse d'ici quelques jours je signalerai résolu.

    Merci à vous parce que je n'aurais pas trouvé de sitôt.
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Si je peux me permettre michel_m, ne faut-il pas mettre "Application.ScreenUpdating = True " quand la procédure est finie ? 


      tu peux! :oD

      réponse est non
      voir ce site
      http://xcell05.free.fr/pages/prog/accvba.htm#ScreenUpdating

      comment aurais-je dû faire pour que mon opération se fasse

      Bin, ccm et moi ont t'a montré (d'ailleurs, les 2 macros ne varient que sur le fond et non sur la méthode)
      0
  8. ccm81 Messages postés 11033 Statut Membre 2 434
     
    re

    @ jen_peuplus

    sto.Value = sto.Value - cellule.Value 'ici l'erreur est générée

    sto étant de type range, et contient une plage, contrairement à cellule, donc, je crois qu'il aurait fallu ecrire quelque chose du genre sto.Cells(ligne,colonne).value=sto.Cells(ligne,colonne).value - cellule.value

    @michel_m
    bonjour michel
    pas de pb pour le rafraichissement, mais, confondre la forme et le fond ....
    je vais mettre ça sur le compte d'un début d'assoupissement post déjeunatoire ...
    bon, j'arrete
    merci pour le Cells(lig, "T"), je me suis toujours cru obligé d'envoyer à cells un n° (numérique) de colonne !
    cordialement
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      confondre la forme et le fond ....
      Oui, effectivement, ca s'arrange pas: je vieillis mal :-)

      Je vais mettre ça sur le compte d'un début d'assoupissement post déjeunatoire ...
      Merci pour ton indulgence :-)

      merci pour le Cells(lig, "T"), je me suis toujours cru obligé d'envoyer à cells un n° (numérique) de colonne !
      Je préfère aussi le numérique mais sur des petits tableaux, la lettre permet une meilleure compréhension pour des débutants.

      Bon WE, j'espère ensolleillé pour tous
      0
  9. jen_peplu Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci pour vos réponses et votre disponibilité. Pendant que certains faisaient la sieste (consécutive à un début d'assoupissement post déjeunatoire), j'ai mis vos conseils en applications et cela m'a bien aidé (jusqu'à la prochaine question).
    Effectivement, ccm81, en adaptant la ligne "sto.Cells(ligne,colonne).value=sto.Cells(ligne,colonne).value - cellule.value" cela marche aussi parfaitement.
    Vivement que je sache écrire comme vous...
    Merci à vous deux
    A+
    0