Calculer la différence

  • Initiateur de la discussion Initiateur de la discussion musat
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

musat

Guest
Bonsoir tout le forum,

J'ai un petit problème simple et facile pour vous.

J'ai un tableau de 3 colonnes A, B, C et plus de 1000 lignes (nombre inconnu et variable ).

Je voudrais dans une colonne D calculer la différence entre B et C sans les titres (ligne 1) et tout cela par macro et pour toutes les lignes (il faut utiliser End(xlUp) à ce que je pense mais j'arrive aps).

Merci beaucoup
 
Bonjour Musat,

Alors à y réfléchir cela ne semble pas très compliqué...mais afin d'être au plus près de ta question aurais-tu un fichier exemple à nous fournir ?

Personnellement je ne capte pas trop la différence entre B et C...

Merci

A+ Vériland
 
Salut musat,

Pourquoi faire simple quand il y a moyen de compliquer les choses.

Enregistre une simple macro :
En D1 (ou la première ligne sur laquelle tu veux opérer ta soustraction) tu tapes =B1-C1
Tu copies cette formule jusqu'à la dernière ligne.
Tu sélectionnes la colonne D et tu fais un copier / coller valeurs
Tu arrêtes ta macro.

Moi non plus je n'y connaîs pas grand chose en VBA (lire : rien du tout), mais cela je sais le faire.

Bonne fin d'année.
André.
 
Rebonsoir,

c'est pas aussi simple que vous les imaginer.
Moi je voudrais appliquer cette règle quelque soit le nombre de lignes: je peux appliquer la macro sur une feuille qui comporte 33 lignes comme je peux l'appliquer sur une autre contenant 33333 lignes.

Alors?

J'espère être clair
Merci
 
salut

Moi aussi je n'y connais rien en VBA mais ce forum est une mine d'or.

Voila notament un truc que j'ai appris grace a ce forun ( @thierry ).

Pour trouver la derniere cellule, tape ca dans ta macro:
Worksheets("Feuil1").Range("A2", [H65536].End(xlUp))

A2 est la cellule de départ.

Allez, a la prochaine.
FAb

PS: se pense ne pas avoir dit de connerie mais je n'en suis pas encore sur!!! lol
 
Bonsoir le forum,

Impeccable Steplof,

j'étais entrain de faire la même manipe que toi mais je bloquais sur l'insertion automatique de la formule dans une boucle...et là tu viens de me donner la réponse...

formuleD = "=(c" & i & "- b" & i & ")"

c'est tout bon

A+ Vériland
 
Bonsoir

Juste pour Steplof, attention aux Variables et surtout quand Musat parle de 33333 lignes.... Ton i as integer va exploser !! de plus ta "DerniereLigne" as Double.... (à virgule flottante en double précision) n'est pas nécessaire pour une Row... donc Var pas géniales..

Astuce pour améliorer la rapidité du code par 20 X : (sur 65535 lignes !)

Private Sub CommandButton1_Click()
Dim DerniereLigne As Long
Dim formuleD As String
Dim i As Long
Application.Calculation = xlManual

DerniereLigne = Range("a65536").End(xlUp).Row
For i = 2 To DerniereLigne
formuleD = "=(c" & i & "- b" & i & ")"
Range("d" & i).Value = formuleD
Next i
Application.Calculation = xlAutomatic
End Sub

Mais ta boucle de formule est tout à fait simple et géniale 🙂
Have a good last Week End 2002
@+Thierry
 
Bonjour @+Thierry et tous les autres,

merci de t'être penché sur "mon" code et pour les corrections que tu apportes quant aux déclarations des variables.
Je dis "mon" car ce n'est que l'adaptation de ta façon de présenter les sub puisque tu es une de mes sources d'apprentissage les plus prolifiques.
C'est sans doute pour ça que tu trouves aussi géniale la petite boucle ;o)

En ce qui concerne ton code Peux tu m'expliquer ce que "disent" à Excel tes 2 lignes Application.Calculation
J'ai pour l'instant pas trouvé d'explications claires dans l'aide VB.

Merci encore pour l'aide que tu nous (m') apportes.

Steplof
 
Re Bonjour

Décidément le simple fait de formuler ses interrogations permet parfois de leur trouver les réponses...

Je pense avoir compris:
tu bloques tous les autres calculs qu'Excel pourraient être amené à faire sur d'autres cellules pendant qu'on écrit FormuleD dans chaque ligne, une fois tout écrit là tu rends la main à Excel pour qu'il mette tout à jour en une seule fois,c'est GENIAL!!!!
Si j'ai bien compris effectivement ça doit accélerer des éxécutions (surtout j'imagine si d'autres cellules utilisent le résultat en D par exemple)
De plus , il y a le temps de calcul et surtout d'affichage du résultat i fois répété qui doit bien diminuer sur des longs process.

Ben je m'en vais tester ça!!!!

Bon WeekEnd à tous aussi, pour ta part @+ Thierry vu ton heure tardive de coucher on ne compte pas sur toi trop tôt aujourd'hui ;o))))

Steplof
 
Bonjour Steplof, BOnjour à tous et toutes

ça fait plaisir de lire çà au réveil ! et oui moi suis pas matinal comme toi ! 6:33 déjà devant le PC !

Pour l'application.calculation tu as répondu toi-même en effet. C'est un moyen d'accélérer énormément l'éxécution d'un code comme celui ci. Je dis bien un code comme celui-ci !

C'est à dire un code qui écrit des formules... Imagine sinon qu'Excel re-calcule à chaque ligne, la ligne où VBA vient d'écrire bien sûr, mais aussi toutes les lignes qui précèdent... sur 33333 lignes, pour que celà se fasse rapidement il faut un "Cray" ou alors attendre le Pentium IX 500 GH... lol

Si tu laisses cette option cochée (nb accessible sans VBA depuis menu / option => onglet "Calcul" / mode de calcul : "automatique" / "sur ordre" (xlautomatic / xlmanual)... çà peut considérablement être interminnable sur des longues plages de cellules...

Cela peut-être très utile durant certaines procédures. On peut aussi faire des calculs pendant que xl est en manual avec l'instruction "Calculate" qui en fait est l'equivalent de la touche "F9", cela peut rendre service dans le cas où il faut obtenir juste un résultat, puis reprendre une longue boucle sans laisser "la main" à Excel pour les calculs auto...

Une dernière recommandantion : Surtout il faut faire bien attention à remettre cette option en fin de procédure sur XlAutomatic.. car sinon XL reste en mode manuel et les Users sinon vont faire un post ici "çà ne marche plus" !!! "Au secours Excel est en grève, il ne calcule plus !!!" lol

Bon Ween End
@=+Thierry
 
Bonsoir François !!!


Si on devait attribuer une palme d'or pour la réponse la plus efficace et simple de l'année.........

Tu es le vainqueur !!! sans contestation

Bravo... parfois le plus grand défaut du VBA est de nous rendre aveugle !

Bonne fin d'année
@+Thierry
 
Bonsoir à toutes et à tous,

Alors là......j'suis vert...on s'fatigue à trouver des solutions, genre prises de tête...lol...et v'là qu'un double clic suffit...hi hi hi

François, tu es le Winner dans ce fil...

A+ Vériland
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour