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 -
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.
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:
- Selection de ligne dans tableau.
- Tableau word - Guide
- Partage de photos en ligne - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
8 réponses
=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
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
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.
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.
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.
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.
bonjour
peut être quelque chose comme ça
bonne suite
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
essaies si j'ai pigé ta demande
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
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.
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.
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)
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
@ 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
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
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
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+
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+