Selection de ligne dans tableau.

Résolu/Fermé
jen_peplu Messages postés 33 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 25 mars 2012 - 28 avril 2011 à 17:32
jen_peplu Messages postés 33 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 25 mars 2012 - 29 avril 2011 à 17:55
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.



A voir également:

8 réponses

charly_rom Messages postés 541 Date d'inscription mercredi 28 novembre 2007 Statut Membre Dernière intervention 27 janvier 2024 102
28 avril 2011 à 17:42
=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
jen_peplu Messages postés 33 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 25 mars 2012
28 avril 2011 à 20:13
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
jen_peplu Messages postés 33 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 25 mars 2012
29 avril 2011 à 10:08
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
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 427
29 avril 2011 à 11:52
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
29 avril 2011 à 12:03
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
29 avril 2011 à 12:05
Bonjour ccm
excuses moi je n'avais pas rafraichi!!!
:o)
0
jen_peplu Messages postés 33 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 25 mars 2012
29 avril 2011 à 13:34
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
29 avril 2011 à 14:07
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
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 427
29 avril 2011 à 14:41
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
29 avril 2011 à 14:52
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
jen_peplu Messages postés 33 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 25 mars 2012
29 avril 2011 à 17:55
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