XL 2010 [Résolu] Modifier la boucle par un tableau

Lone-wolf

XLDnaute Barbatruc
Bonjour à toutes et à tous :)

J'aimerais modifier cette boucle par un tableau Scripting.Dictonary, mais je ne sais pas m'y prendre. Merci d'avance pour votre aide

VB:
x = 0
With ShB
For i = 7 To derlig
x = x + 1
.Range("a" & i) = Left(.Range("b" & i), 2) & Left(.Range("c" & i), 2) & "-000" & x
Next i
End With
 

laetitia90

XLDnaute Barbatruc
salut loup tout seul:):p

avec ton exemple passer par un tablo je peus le comprendre:) mais le dico dans ce cas pourquoi ???

mais un fichier exemple pour faire plus " clair"

regarderai cet aprés midi si pas de reponse moi partir

ps: x peut être i dans ton exemple;)
 

ChTi160

XLDnaute Barbatruc
Bonjour Lone-wolf
Bonjour le Fil , le Forum
pas évident de travailler sur ton fichier car il y a des Liaisons etc et l'on obtient pas les données sous leur bonne forme .
pourrais tu mettre un exemple du format de tes Données en Colonnes B et C .
c'est bien en feuille "JOURNAL STOCKS" ? car ActiveSheet dans la procédure .
Merci par avance
Bonne Journée
Jean marie
 

Rouge

XLDnaute Impliqué
Bonjour
Comme ceci par exemple
Sub test()
Dim Derlig As Long
Application.ScreenUpdating = False
Derlig = [b100000].End(xlUp).Row
Range(Cells(7, "A"), Cells(Derlig, "A")).FormulaR1C1 = "=LEFT(RC[1],2)&LEFT(RC[2],2)&""-000"" &ROW()"
Range(Cells(7, "A"), Cells(Derlig, "A")).Value = Range(Cells(7, "A"), Cells(Derlig, "A")).Value
End Sub

Cdlt
 

Si...

XLDnaute Barbatruc
Bon_jour

Résolu que tu dis mais fais-tu la distinction entre les 2 types de numérotation ?

Numérotation intégrale : avec un tableau (table) qui adapte les formats, formules … en cas d'ajout, de suppression de lignes.
VB:
Sub test()
  [TBo[code]].FormulaR1C1 = "=LEFT(RC[1],2)&LEFT(RC[2],2)&""-000"" &ROW()" & -[Tbo].Row + 1
End Sub
Nota : normalement la macro n'est utile que si la colonne code est remplie partiellement.

Numérotation par thème : je garde le tableau bien que la macro doit-être relancée à chaque ajout, suppression de lignes mais, ici, j'utilise le dico *.

VB:
Private Sub CommandButton2_Click()
  Application.ScreenUpdating = 0
  [Tbo[code]] = ""
  Set N° = CreateObject("Scripting.dictionary")
  For Each C In [Tbo[Quoi]]: N°(C.Value) = "": Next
  a = N°.keys
  For n = 0 To N°.Count - 1
  [Tbo].AutoFilter 2, a(n)
  x = 0
  For Each R In [Tbo[Quoi]].SpecialCells(12)
  x = x + 1
  R(1, 0) = Left(R, 2) & Left(R(1, 2), 2) & "-000" & x
  Next
  [Tbo].AutoFilter
  Next
End Sub

* d'aucun(e) ;) pourrait le coupler avec un Array (tableau VBA)
 

Pièces jointes

  • NumérotationDansColonne(Tableau).xlsm
    65.5 KB · Affichages: 25

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

Juste pour le plaisir de croiser Si...
(et pour l'avoir plus courte ;))
VB:
Sub teste()
[TBo[code]].Formula = "=left(B2,2)&left(C2,2)&""-000""&row()" & -[Tbo].Row + 1
End Sub

NB1: Je croise évidemment le loup, mon jumeau de prénom et leti avec plaisir, mais je vous ai pas inclus dans la présente taquinerie ;)

NB2: Je croise aussi Rouge (ni avec plaisir ni avec déplaisir) au motif que je ne le "connais" point. ;)
 

Lone-wolf

XLDnaute Barbatruc
Bonsoir à tous :)

Malgré que le sujet soit clôt, j'ai pris exemple sur la formule comme ceci

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tbl As Range

Application.EnableEvents = False

Set tbl = Range("a7:a" & Range("a" & Rows.Count).End(xlUp).Row)
tbl.FormulaLocal = "=SI(C7<>"""";GAUCHE(B7;2)&GAUCHE(C7;2)&""-000"" &LIGNE()-6;"""")"
tbl.Value = tbl.Value

Application.EnableEvents = True
End Sub
 

ChTi160

XLDnaute Barbatruc
Bonjour
Bonjour le Fil ,le Forum
une approche de ce que j'ai cru comprendre Lol
je ne sais pas (pour le format) le nombre de lignes par Référence .
Bonne Journée
Jean marie
 

Pièces jointes

  • Classeur1-Chti160.xlsm
    64.4 KB · Affichages: 23

Discussions similaires

Réponses
4
Affichages
209

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin