Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
bonjour
ci joint le fichier excel dont je veux que le boutton soit dans une feuille et les calculs se fait dans une autre feuille
merci
ps: le boutton fonctionne bien je veux juste faire le transfert
pour éviter de prêcher dans le désert, je te retourne ton fichier joint ci-dessous.
j'ai déplacé ton bouton sur "Feuil2", et adapté la macro en conséquence :
VB:
Option Explicit
Sub casenul()
Dim dercol%, i&
With Worksheets("Feuil1")
dercol = .Cells(8, Columns.Count).End(xlToLeft).Column: If dercol < 4 Then Exit Sub
Application.ScreenUpdating = 0: .Cells(10, dercol) = .Cells(8, dercol)
For i = dercol To 4 Step -1
.Cells(10, i - 1) = .Cells(8, dercol): If .Cells(12, i - 1) > 0 Then dercol = i - 1
Next i
End With
End Sub
malheureusement, je n'suis pas sûr d'avoir bien compris c'que tu veux faire au juste, alors c'est juste un essai ; cependant, dans ton code initial, note que pour :
VB:
If Cells(ligne + 4, i - 1).Value = 0 Then
Cells(ligne + 2, i - 1).Value = Cells(ligne, dercol).Value
Else
Cells(ligne + 2, i - 1).Value = Cells(ligne, dercol).Value
dercol = dercol - (dercol - (i - 1))
End If
tu exécutes cette ligne : Cells(ligne + 2, i - 1).Value = Cells(ligne, dercol).Value
dans la partie VRAI du test, ET la même ligne dans la partie FAUX !
comme cette ligne est clairementindépendante du test,
tu peux la sortir du bloc de test et la placer au-dessus :
VB:
Cells(ligne + 2, i - 1).Value = Cells(ligne, dercol).Value
If Cells(ligne + 4, i - 1).Value = 0 Then
Else
dercol = dercol - (dercol - (i - 1))
End If
puis comme y'a aucune instruction dans la partie If .. Then, inverse le sens du test pour donner ceci :
VB:
Cells(ligne + 2, i - 1).Value = Cells(ligne, dercol).Value
If Cells(ligne + 4, i - 1).Value <> 0 Then
dercol = dercol - (dercol - (i - 1))
End If
comme tu n'as que des valeurs positives, c'est inutile
de tester des nombres négatifs, donc :
VB:
Cells(ligne + 2, i - 1).Value = Cells(ligne, dercol).Value
If Cells(ligne + 4, i - 1).Value > 0 Then
dercol = dercol - (dercol - (i - 1))
End If
enfin, note que d'un point de vue mathématiques :
Code:
dercol = dercol - (dercol - (i - 1))
= dercol - dercol + (i - 1)
= (dercol - dercol) + (i - 1)
= 0 + (i - 1)
= i - 1
Désolé, mais perso je ne comprendrais jamais celles et ceux qui se lance à corps perdu dans la programmation sans en connaitre les bases 🙄 mais aujourd'hui tout doit allez plus vite on se fou du reste... 😞
Mais bravo à toi de trouver du temps pour expliquer en long, en large... perso je bosse 😜
@BrunoM45 : ah, c'est la rançon du fait que tu as été parmi les pionniers précurseurs : tu es beaucoup plus en avance que beaucoup d'autres, et en plus, tu es devenu nostalgique du passé ! 😄
- 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