XL 2013 boucles successives

Dicas

XLDnaute Junior
Je corrige mes pièces jointes... Elles me sont personnelles .. mais quand-même...
Je ne vous avais pas fréquenté depuis longtemps, je dois reprendre les bonnes pratiques...
En pièces jointes mon développement et mon cade
 

Pièces jointes

  • pour teste.zip
    1.5 MB · Affichages: 21
  • Sub datation.zip
    9 KB · Affichages: 15
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Mon Excel avait une petit problème* (d'où le VBA.)
Normalement cela doit fonctionner écrit ainsi
VB:
Sub VersionUnChouiaPlusCourte()
Dim Ligne As Long
Ligne = Cells(Rows.Count, "B").End(xlUp).Row + 1
Cells(Ligne, 1).Resize(, 3) = Array(Ligne, Date, Ligne & "-" & CLng(Date))
End Sub

EDITION: Sur mon fichier de test (créé pour cela), cette macro semble faire ce qu'on lui demande.
NB: Ne pas oublier de mettre les noms de tes propres feuilles avant de tester.
(Accessoirement tu peux renommer la macro comme bon te semble ;) )
VB:
Sub PhaseUN_suivie_de_PHASE_DEUX()
Dim f As Worksheet, X&: Set f = Sheets("Commandes"): X = f.Cells(Rows.Count, 2).End(3).Row
'PHASE I (Sur Feuille Commandes)
f.Cells(X + 1, 1).Resize(, 3) = Array(X, Date, X & "-" & CLng(Date))
Set f = Sheets("Stocks")
'PHASE II (Sur Feuille Stocks)
'Sur chaque ligne qui porte une qté en colonne "BT", un calcul en "BP" tel que "BT"*"BU"
For Each c In f.Range("BT2:BT100")
    If Len(c) > 0 Then
        f.Cells(c.Row, "BP") = _
        Round(f.Cells(c.Row, "BT") * f.Cells(c.Row, "BU"), 2)
    End If
Next
End Sub

*: il semblerait que cela vienne de tes fichiers.
(quand je les ouvre Excel parle de référence circulaire et commence à se comporter bizarrement)
 

Dicas

XLDnaute Junior
Staple 1600 !! Bonjour !!!
*: Je n'ai pas de retour sur référence circulaire ??!!
ton code actualisé sur feuille "ENREGISTREMENT DE CDE" butte sur (DATE) et ne réalise donc pas la phase UN. Je lui ai donc substitué la première partie de mon code (dont je me suis assuré qu'il fonctionne) pour l'associer à ta phase DEUX et la encore, je n'obtient pas, ni la transition, ni les calculs escomptés ??!
la (Date) lui semble indigeste ??!
 

Pièces jointes

  • Version test 2.zip
    9.6 KB · Affichages: 16

Lone-wolf

XLDnaute Barbatruc
Bonjour à tous :)

@Dicas

Je vois que tu continue avec tes mauvaises habitudes, au lieu de prendre exemple sur la façon de faire du post #2.

Macro prise sur le fichier Word

If Range("b" & i) = "" Then
Range("E3").Select
Selection.Copy
Range("b" & i).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
End If
 

Dicas

XLDnaute Junior
Je suis si peu connaisseur de la chose que je m'accroche à ce que j'ai pu bâtir de bric et de broc et dont, jusqu'à présent j'ai du me satisfaire lorsque ça marche ... Alors, bien évidemment lorsque ça ne marche pas...... Comme le nouveau né, qui, lorsqu'il n'a appris que le mot "PAPA" semble n'aimer que Papa. Je te promets qu'avec plus de références dans le métier, plus à l'aise avec la syntaxe, je te ferai ce plaisir... J'y travaille déjà... Mais je pars de loin... Je ne connais encore rien du langage....
Rassure toi, ça n'est pas de l'entêtement, c'est de l'incompétence. Mais Je te remercie de forcer le destin en m'incitant à progresser...
 

Si...

XLDnaute Barbatruc
Bon_soir

Une réécriture des macros s'impose ! Il y en a même une qui ne passe pas tant son nombre de lignes est important.

Dans l'exemple joint, j'utilise un tableau qui présente l'avantage de ne pas se préoccuper des formules, MFC … en cas d'ajout de lignes et de bien d'autres choses.

Le code associé au bouton est

VB:
Dim C As Range
Sub datation_cde_pharma()
  Set C = [Tbo].Item([Tbo].Rows.Count, 1): C.Copy C(2, 1): C(2, 2).FormulaR1C1 = "=TODAY
  With Sheets("Stocks")
  ' Fixe les Qtés en Commande
    For Each C In .[BT9:BT81]
      If C <> "" Then C = C * C(1, 0)
    Next
  End With
End Sub

Remarques
- attention : à chaque lancement de cette macro, les quantités de stock changent !
- la référence circulaire n'est pas notée quand on a coché dans
Fichier … Options … Formules … Activer le calcul itératif
- formater, remplir de formules des lignes et de colonnes entières provoquent des surpoids,
des ralentissements qui peuvent être très pénalisants.

J'ai enlevé beaucoup de choses, mais pas tout, pour circonscrire le problème d'où le poids (inacceptable).
 

Pièces jointes

  • Gestion_Tableau(vba).xlsm
    1.5 MB · Affichages: 14

Lone-wolf

XLDnaute Barbatruc
Bonsoir à tous :)

Et si tu ne veux pas avoir de formules en colonne A et C

VB:
    With Feuil10
        derlig = Range("c" & Rows.Count).End(xlUp).Row
  
        For i = 2 To derlig
                .Cells(i, 1) = i - 1
        Next i

        .Range("c2").FormulaLocal = "=SI(B2="""";"""";A2&""-""&CNUM(B2))"
        .Range("c2").Copy .Range("c3")
        .Range("c3").AutoFill .Range("c3:c" & derlig)

        Set plage = .Range("c2:c" & derlig)
        For Each cel In plage
            With cel
                .Value = .Value
            End With
        Next cel
    End With
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum, Lone-Wolf

Lone-Wolf
Ta macro à ma sauce ;)
VB:
Sub AutreSyntaxePossible()
With ActiveSheet
derlig = .Cells(Rows.Count, 2).End(3).Row
    .[A2] = 1: .[A2].DataSeries 2, -4132, 1, 1, derlig - 1
    With [C2].Resize(derlig - 1)
    .FormulaLocal = "=SI(B2="""";"""";A2&""-""&CNUM(B2))": .Value = .Value
    End With
End With
End Sub
 

Discussions similaires

  • Question
Power Query Power Query
Réponses
14
Affichages
789

Statistiques des forums

Discussions
312 543
Messages
2 089 445
Membres
104 167
dernier inscrit
nourisebai