Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 casenulle

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 !

sarahersarah

XLDnaute Nouveau
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
 

Pièces jointes

Bonjour,

Il faut apprendre les bases de VBA et sa programmation objets
Exemple :
VB:
 Sheets("Toto").Cells(ligne + 2, i - 1).Value = Feuille.Cells(ligne, dercol).Value

@+
 
Bonsoir sarahsahara, Bruno,

bienvenue sur le site XLD ! 🙂

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 clairement indé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

ça simplifie, pas vrai ? 😜

soan
 

Pièces jointes

Dernière édition:
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 😜
 
- 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

Discussions similaires

Réponses
10
Affichages
233
  • Question Question
XL 2013 user form
Réponses
2
Affichages
260
Réponses
2
Affichages
147
Réponses
18
Affichages
421
Réponses
17
Affichages
654
Réponses
16
Affichages
301
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…