Comment sélectionner des cellules avec nbre et repet variables

Fermé
VINCEADONF62 - 10 sept. 2013 à 16:55
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 - 11 sept. 2013 à 17:10
Bonjour à tous,


je m'explique. Je récupère des infos provenant d'un instrument de mesure.
Dans la colonne B, j'ai un nombre aléatoire de critères et ceux-ci répétés plusieurs fois suivant le nombre de pièces mesurées. Au final, je veux les mettre en colonnes par critères...
J'ai donc au début de mon programme demandé le nombre de critères et de pièces à traiter.
Ensuite çà se corse pour moi, car je voudrais les sélectionner en fonction de ces 2 variables...

Ci-joint les données:

1 :BEGIN
2 09/09/2013 15:43 PIECE 1
3 6.4?.0.5 6,4254
4 6.85 0/-0.05 6,8047
5 6.85 0/-0.05 6,8023
6 7 +0.03/-0.02 6,9812
7 6.8 0/-0.1 6,7687
8 3 0.2/0 3,0767
9 8.18 0.1/0 8,2011
10 9.95 0.1/0 9,9764
11 :END
12 :BEGIN PIECE 2
13 6.4?.0.5 6,4108
14 6.85 0/-0.05 6,7942
15 6.85 0/-0.05 6,8012
16 7 +0.03/-0.02 6,9795
17 6.8 0/-0.1 6,7727
18 3 0.2/0 3,078
19 8.18 0.1/0 8,2326
20 9.95 0.1/0 10,0549
21 :END
22 :BEGIN PIECE 3
23 6.4?.0.5 6,4131
24 6.85 0/-0.05 6,7941
25 6.85 0/-0.05 6,7971
26 7 +0.03/-0.02 6,954
27 6.8 0/-0.1 6,7484
28 3 0.2/0 3,0477
29 8.18 0.1/0 8,257
30 9.95 0.1/0 9,9597
31 :END
32 :BEGIN PIECE 4
33 6.4?.0.5 6,4245
34 6.85 0/-0.05 6,8022
35 6.85 0/-0.05 6,804
36 7 +0.03/-0.02 6,9549
37 6.8 0/-0.1 6,7578
38 3 0.2/0 3,0571
39 8.18 0.1/0 8,2133
40 9.95 0.1/0 10,0227
41 :END

Ici mon début de programme:

Private Sub CommandButton1_Click()
' preparation donnees à prendre
Dim A As String

A = InputBox("NOMBRE DE VALEURS ?", "Titre") (DANS MON EXEMPLE 8)
If A <> "" Then 'Si la valeur est différente de "" on affiche le résultat
MsgBox A
End If

Dim B As String

B = InputBox("NOMBRE DE PIECES ?", "Titre") (DANS MON EXEMPLE 4)

If B <> "" Then 'Si la valeur est différente de "" on affiche le résultat
End If



Range("b3:b10").Select
Application.CutCopyMode = False
Selection.Copy
Range("C1").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
Range("b13:b20").Select
Application.CutCopyMode = False
Selection.Copy
Range("C2").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
Range("b23:b30").Select
Application.CutCopyMode = False
Selection.Copy
Range("C3").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
Range("b33:b40").Select
Application.CutCopyMode = False
Selection.Copy
Range("C4").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
Range("b43:b50").Select
Application.CutCopyMode = False
Selection.Copy
Range("C5").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
Range("b53:b60").Select
Application.CutCopyMode = False
Selection.Copy
Range("C6").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
Range("b63:b70").Select
Application.CutCopyMode = False
Selection.Copy
Range("C7").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
ActiveWindow.SmallScroll Down:=6
Range("b73:b80").Select
Application.CutCopyMode = False
Selection.Copy
Range("C8").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
Range("b83:b90").Select
Application.CutCopyMode = False
Selection.Copy
Range("C9").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
ActiveWindow.SmallScroll Down:=6
Range("b93:b100").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=-12
Range("C10").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
ActiveWindow.SmallScroll Down:=18
Range("b103:b110").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=-51
Range("C11").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
ActiveWindow.SmallScroll Down:=24
Range("b113:b120").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=-36
Range("C12").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
ActiveWindow.SmallScroll Down:=-24
Range("b123:b130").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=-60
Range("C13").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
ActiveWindow.SmallScroll Down:=27
Range("b133:b140").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=-33
Range("C14").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
Range("C15").Select
ActiveWindow.SmallScroll Down:=36
Range("b143:b150").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=-45
Range("C15").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
ActiveWindow.SmallScroll Down:=30
Range("b153:b160").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=-27
Range("C16").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
Range("C17").Select
ActiveWindow.SmallScroll Down:=42
Range("b163:b170").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=-39
Range("C17").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
ActiveWindow.SmallScroll Down:=30
Range("b173:b180").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=-36
Range("C18").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
ActiveWindow.SmallScroll Down:=33
Range("b183:b190").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=-24
Range("C19").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
ActiveWindow.SmallScroll Down:=39
Range("b193:b200").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=-57
Range("C20").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
ActiveWindow.SmallScroll Down:=-9



End Sub
A voir également:

4 réponses

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
11 sept. 2013 à 09:26
Bonjour,

Peux-tu mettre à disposition les données d'origine (idéalement dans le format produit par ton instrument de mesure) et un extrait du résultat que tu souhaites obtenir (2 1è pièces) sur cjoint.com ? Il me vient des idées d'importation de fichier csv avec " " comme séparateur de données puis de formules...

A+
0
VINCEADONF62 Messages postés 6 Date d'inscription mardi 10 septembre 2013 Statut Membre Dernière intervention 25 septembre 2017
11 sept. 2013 à 10:49
Bonjour Zoul67

les données sont indiquées dans mon message. Leurs positions dans ce dialogue n'a pas été respectées mais elles sont dans la colonne B et vont dans ce cas de figure des lignes 3à10 puis de 13 à 20 etc... soit 8 données (de 3 à 10) répétées 16 fois (16 pièces) (8 et 16 étant des variables demandées en début de programme)
Ces données sont ensuite collées et transposer en ligne pour créer des colonnes de données
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
11 sept. 2013 à 11:01
Ta macro ne sépare pas tes "trois critères" (suivant ton message initial) mais crée juste une ligne par pièce. Les "trois critères" d'une cellule de la colonne B se retrouvent donc toujours dans la même cellule : est-ce le but recherché ?
C'est pour ça qu'un avant/après aiderait...
0
VINCEADONF62 Messages postés 6 Date d'inscription mardi 10 septembre 2013 Statut Membre Dernière intervention 25 septembre 2017
11 sept. 2013 à 12:06
Ok, voici les infos
AVANT



:BEGIN
09/09/2013 15:43
6.4?.0.5 6,4254
6.85 0/-0.05 6,8047
6.85 0/-0.05 6,8023
7 +0.03/-0.02 6,9812
6.8 0/-0.1 6,7687
3 0.2/0 3,0767
8.18 0.1/0 8,2011
9.95 0.1/0 9,9764
:END
:BEGIN
6.4?.0.5 6,4108
6.85 0/-0.05 6,7942
6.85 0/-0.05 6,8012
7 +0.03/-0.02 6,9795
6.8 0/-0.1 6,7727
3 0.2/0 3,078
8.18 0.1/0 8,2326
9.95 0.1/0 10,0549
:END
:BEGIN
6.4?.0.5 6,4131
6.85 0/-0.05 6,7941
6.85 0/-0.05 6,7971
7 +0.03/-0.02 6,954
6.8 0/-0.1 6,7484
3 0.2/0 3,0477
8.18 0.1/0 8,257
9.95 0.1/0 9,9597
:END
:BEGIN
6.4?.0.5 6,4245
6.85 0/-0.05 6,8022
6.85 0/-0.05 6,804
7 +0.03/-0.02 6,9549
6.8 0/-0.1 6,7578
3 0.2/0 3,0571
8.18 0.1/0 8,2133
9.95 0.1/0 10,0227
:END
:BEGIN
6.4?.0.5 6,4175
6.85 0/-0.05 6,7921
6.85 0/-0.05 6,8028
7 +0.03/-0.02 6,9646
6.8 0/-0.1 6,7616
3 0.2/0 3,058
8.18 0.1/0 8,2502
9.95 0.1/0 10,0003
:END
:BEGIN
6.4?.0.5 6,3974
6.85 0/-0.05 6,7738
6.85 0/-0.05 6,7777
7 +0.03/-0.02 6,9563
6.8 0/-0.1 6,7432
3 0.2/0 3,1193
8.18 0.1/0 8,2421
9.95 0.1/0 9,9977
:END
:BEGIN
6.4?.0.5 6,3993
6.85 0/-0.05 6,7846
6.85 0/-0.05 6,8471
7 +0.03/-0.02 6,9868
6.8 0/-0.1 6,7799
3 0.2/0 3,0215
8.18 0.1/0 8,1494
9.95 0.1/0 9,9889
:END
:BEGIN
6.4?.0.5 6,4197
6.85 0/-0.05 6,8115
6.85 0/-0.05 6,8096
7 +0.03/-0.02 7,0041
6.8 0/-0.1 6,798
3 0.2/0 3,0489
8.18 0.1/0 8,2174
9.95 0.1/0 10,0337
:END
:BEGIN
6.4?.0.5 6,4297
6.85 0/-0.05 6,8196
6.85 0/-0.05 6,8307
7 +0.03/-0.02 6,9784
6.8 0/-0.1 6,7736
3 0.2/0 3,0461
8.18 0.1/0 8,271
9.95 0.1/0 9,9923
:END
:BEGIN
6.4?.0.5 6,4175
6.85 0/-0.05 6,7908
6.85 0/-0.05 6,796
7 +0.03/-0.02 6,9487
6.8 0/-0.1 6,7456
3 0.2/0 3,0229
8.18 0.1/0 8,1791
9.95 0.1/0 9,9892
:END
:BEGIN
6.4?.0.5 6,432
6.85 0/-0.05 6,8168
6.85 0/-0.05 6,8175
7 +0.03/-0.02 6,963
6.8 0/-0.1 6,7585
3 0.2/0 3,084
8.18 0.1/0 8,2632
9.95 0.1/0 10,0644
:END
:BEGIN
6.4?.0.5 6,4218
6.85 0/-0.05 6,7941
6.85 0/-0.05 6,8011
7 +0.03/-0.02 6,9865
6.8 0/-0.1 6,766
3 0.2/0 2,9728
8.18 0.1/0 8,2381
9.95 0.1/0 10,0241
:END
:BEGIN
6.4?.0.5 6,4194
6.85 0/-0.05 6,7932
6.85 0/-0.05 6,7958
7 +0.03/-0.02 6,9483
6.8 0/-0.1 6,7449
3 0.2/0 3,0999
8.18 0.1/0 8,2491
9.95 0.1/0 9,968
:END
:BEGIN
6.4?.0.5 6,4245
6.85 0/-0.05 6,8094
6.85 0/-0.05 6,8126
7 +0.03/-0.02 6,9681
6.8 0/-0.1 6,7667
3 0.2/0 2,9852
8.18 0.1/0 8,2156
9.95 0.1/0 9,99
:END
:BEGIN
6.4?.0.5 6,4161
6.85 0/-0.05 6,815
6.85 0/-0.05 6,8115
7 +0.03/-0.02 6,9973
6.8 0/-0.1 6,7806
3 0.2/0 3,0692
8.18 0.1/0 8,1869
9.95 0.1/0 10,0418
:END
:BEGIN
6.4?.0.5 6,4105
6.85 0/-0.05 6,8057
6.85 0/-0.05 6,8071
7 +0.03/-0.02 6,9861
6.8 0/-0.1 6,787
3 0.2/0 3,0541
8.18 0.1/0 8,2146
9.95 0.1/0 9,9619
:END
:BEGIN
09/09/2013 15:47
:END

APRES

6,425 6,805 6,802 6,981 6,769 3,077 8,201 9,976
6,411 6,794 6,801 6,980 6,773 3,078 8,233 10,055
6,413 6,794 6,797 6,954 6,748 3,048 8,257 9,960
6,425 6,802 6,804 6,955 6,758 3,057 8,213 10,023
6,418 6,792 6,803 6,965 6,762 3,058 8,250 10,000
6,397 6,774 6,778 6,956 6,743 3,119 8,242 9,998
6,399 6,785 6,847 6,987 6,780 3,022 8,149 9,989
6,420 6,812 6,810 7,004 6,798 3,049 8,217 10,034
6,430 6,820 6,831 6,978 6,774 3,046 8,271 9,992
6,418 6,791 6,796 6,949 6,746 3,023 8,179 9,989
6,432 6,817 6,818 6,963 6,759 3,084 8,263 10,064
6,422 6,794 6,801 6,987 6,766 2,973 8,238 10,024
6,419 6,793 6,796 6,948 6,745 3,100 8,249 9,968
6,425 6,809 6,813 6,968 6,767 2,985 8,216 9,990
6,416 6,815 6,812 6,997 6,781 3,069 8,187 10,042
6,411 6,806 6,807 6,986 6,787 3,054 8,215 9,962
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
11 sept. 2013 à 13:09
Dézippe le contenu du fichier https://www.cjoint.com/?CIlngbd5gXM dans un dossier.
Dans le classeur Excel tu as le résultat. Tu peux réexécuter la macro "essai" en écrivant e.txt en A1 dans le deuxième onglet.
La macro détecte automatiquement le nombre de pièces et le nombre de critères

NB : j'ai fait la macro suivant tes dernières données, dont la structure est un peu différente de ce que tu as donné à l'origine
0
VINCEADONF62 Messages postés 6 Date d'inscription mardi 10 septembre 2013 Statut Membre Dernière intervention 25 septembre 2017
11 sept. 2013 à 14:12
Merci Zoul67

je viens de me rendre compte que cela aurait peut-etre été plus facile pour toi en t'indiquant que les données étaient dans le colonne B de EXCEL... désolé


COLONNE A DE EXCEL COLONNE A DE EXCEL


:BEGIN
09/09/2013 15:43
6.4?.0.5 6,4254
6.85 0/-0.05 6,8047
6.85 0/-0.05 6,8023
7 +0.03/-0.02 6,9812
6.8 0/-0.1 6,7687
3 0.2/0 3,0767
8.18 0.1/0 8,2011
9.95 0.1/0 9,9764
:END
:BEGIN
6.4?.0.5 6,4108
6.85 0/-0.05 6,7942
6.85 0/-0.05 6,8012
7 +0.03/-0.02 6,9795
6.8 0/-0.1 6,7727
3 0.2/0 3,078
8.18 0.1/0 8,2326
9.95 0.1/0 10,0549
:END
:BEGIN
6.4?.0.5 6,4131
6.85 0/-0.05 6,7941
6.85 0/-0.05 6,7971
7 +0.03/-0.02 6,954
6.8 0/-0.1 6,7484
3 0.2/0 3,0477
8.18 0.1/0 8,257
9.95 0.1/0 9,9597
:END
:BEGIN
6.4?.0.5 6,4245
6.85 0/-0.05 6,8022
6.85 0/-0.05 6,804
7 +0.03/-0.02 6,9549
6.8 0/-0.1 6,7578
3 0.2/0 3,0571
8.18 0.1/0 8,2133
9.95 0.1/0 10,0227
:END
:BEGIN
6.4?.0.5 6,4175
6.85 0/-0.05 6,7921
6.85 0/-0.05 6,8028
7 +0.03/-0.02 6,9646
6.8 0/-0.1 6,7616
3 0.2/0 3,058
8.18 0.1/0 8,2502
9.95 0.1/0 10,0003
:END
:BEGIN
6.4?.0.5 6,3974
6.85 0/-0.05 6,7738
6.85 0/-0.05 6,7777
7 +0.03/-0.02 6,9563
6.8 0/-0.1 6,7432
3 0.2/0 3,1193
8.18 0.1/0 8,2421
9.95 0.1/0 9,9977
:END
:BEGIN
6.4?.0.5 6,3993
6.85 0/-0.05 6,7846
6.85 0/-0.05 6,8471
7 +0.03/-0.02 6,9868
6.8 0/-0.1 6,7799
3 0.2/0 3,0215
8.18 0.1/0 8,1494
9.95 0.1/0 9,9889
:END
:BEGIN
6.4?.0.5 6,4197
6.85 0/-0.05 6,8115
6.85 0/-0.05 6,8096
7 +0.03/-0.02 7,0041
6.8 0/-0.1 6,798
3 0.2/0 3,0489
8.18 0.1/0 8,2174
9.95 0.1/0 10,0337
:END
:BEGIN
6.4?.0.5 6,4297
6.85 0/-0.05 6,8196
6.85 0/-0.05 6,8307
7 +0.03/-0.02 6,9784
6.8 0/-0.1 6,7736
3 0.2/0 3,0461
8.18 0.1/0 8,271
9.95 0.1/0 9,9923
:END
:BEGIN
6.4?.0.5 6,4175
6.85 0/-0.05 6,7908
6.85 0/-0.05 6,796
7 +0.03/-0.02 6,9487
6.8 0/-0.1 6,7456
3 0.2/0 3,0229
8.18 0.1/0 8,1791
9.95 0.1/0 9,9892
:END
:BEGIN
6.4?.0.5 6,432
6.85 0/-0.05 6,8168
6.85 0/-0.05 6,8175
7 +0.03/-0.02 6,963
6.8 0/-0.1 6,7585
3 0.2/0 3,084
8.18 0.1/0 8,2632
9.95 0.1/0 10,0644
:END
:BEGIN
6.4?.0.5 6,4218
6.85 0/-0.05 6,7941
6.85 0/-0.05 6,8011
7 +0.03/-0.02 6,9865
6.8 0/-0.1 6,766
3 0.2/0 2,9728
8.18 0.1/0 8,2381
9.95 0.1/0 10,0241
:END
:BEGIN
6.4?.0.5 6,4194
6.85 0/-0.05 6,7932
6.85 0/-0.05 6,7958
7 +0.03/-0.02 6,9483
6.8 0/-0.1 6,7449
3 0.2/0 3,0999
8.18 0.1/0 8,2491
9.95 0.1/0 9,968
:END
:BEGIN
6.4?.0.5 6,4245
6.85 0/-0.05 6,8094
6.85 0/-0.05 6,8126
7 +0.03/-0.02 6,9681
6.8 0/-0.1 6,7667
3 0.2/0 2,9852
8.18 0.1/0 8,2156
9.95 0.1/0 9,99
:END
:BEGIN
6.4?.0.5 6,4161
6.85 0/-0.05 6,815
6.85 0/-0.05 6,8115
7 +0.03/-0.02 6,9973
6.8 0/-0.1 6,7806
3 0.2/0 3,0692
8.18 0.1/0 8,1869
9.95 0.1/0 10,0418
:END
:BEGIN
6.4?.0.5 6,4105
6.85 0/-0.05 6,8057
6.85 0/-0.05 6,8071
7 +0.03/-0.02 6,9861
6.8 0/-0.1 6,787
3 0.2/0 3,0541
8.18 0.1/0 8,2146
9.95 0.1/0 9,9619
:END
:BEGIN
09/09/2013 15:47
:END
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
11 sept. 2013 à 16:26
Je ne comprends pas... ton problème est résolu ou non ? Cela m'étonne que ton instrument de mesure sorte un fichier Excel d'où ma première demande d'envoi de fichier. Je suis donc parti du principe que l'instrument sort un fichier texte, analogue au fichier e.txt que je t'ai joint.
0
VINCEADONF62 Messages postés 6 Date d'inscription mardi 10 septembre 2013 Statut Membre Dernière intervention 25 septembre 2017
11 sept. 2013 à 17:00
Non pas réellement car le fichier est converti par le logiciel de mesure vidéo en fichier excel
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
11 sept. 2013 à 17:10
Bon courage pour l'adaptation (code VBA accessible via Alt+F11).
Je te conseille de créer une macro complémentaire pour pouvoir l'exécuter depuis n'importe quel fichier issu d'une mesure.
0