FORUM Tom's Hardware » Programmation » VB / VBA / VBS » aide pour tranfére de données en VBA
 

aide pour tranfére de données en VBA

Il y a 491 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



es ce possible de transféré ces données ?




Attention si vous cliquez sur "voir les résultats" vous ne pourrez plus voter

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : aide pour tranfére de données en VBA
 
Plus d'informations

bonjour,

A partir d'un tableau excel faut que je sorte certaine donné ! je vous explique mon problème !

ci-dessous fichier excel

CONNECTEUR BROCHE CONNECTEUR BROCHE

CF-TC1 A1 B2 12D
CF-TC2 D3 B2 12D
B2 12G CF-TC2 B5


B2 es un bornier et "12" es sa borne dc tou les point en "12" "G" ou "D" sont en liaisons

moi je voudrai lui faire dire directement que le connecteur "CF-TC1.A1" ; "CF-TC2.D3" ; "CF-TC2.B5" sont en liaison direct

je voudrai que ça puisse s'écrire de tel façon : <> (CF-TC1.A1) (CF-TC2.D3)
<> (CF-TC2.B5)

ou bien d'une écriture similaire : <> (CF-TC1.A1) (CF-TC2.D3)
<> (CF-TC1.A1) (CF-TC2.B5)
sans ni écrire "B2.12G/D"
se sont les seuls écritures que puissent reconnaître ma machine
je ne connai pas bien VBA c'est pour sa que je fait appelle et savoir si c'est faisable
merci.

Plus d'informations

c'est pour un programme de test de cablage, pour tester la continuité des câbles,
ma liste de cablage es défini comme cela dans un tableau excel :
...............colonne A........colonne B.........colonne C.......colonne D
ligne 1:........tc1.................a2...................B2.................12G
ligne 2:........tc2.................d3...................B2.................12D

colonne A correspond au nom de mon connecteur
colonne B correspond a la broche du connecteur
colonne C correspond à le nom d'un bornier
colonne D correspond à a un borne du bornier la terminaison "D" ou "G" n'a aucune importance.
la les 2 câbles sont en continuités.
Pour testé notre matériel nous pouvons que nous raccordé sur connecteur nous écrivons notre programme de test à la manuellement tel que: <>(tc1.a2) (tc2.d3)
c'est l'écriture que puisse reconnaître mon testeur.
j'ai mon câble avec un tenant et un aboutissant qui et relier avec un autre câble par une borne. je voudrai qu'il puisse mécrire la liaison entre le tenant du 1er fil et l'aboutissant du 2ieme c'est à dire:
................colonne A..........colonne B...........colonne C........colonne D
ligne 1:..........tc1...................a2....................tc2..................d3

mais en sachant qu'il passe par le bornier et que c'est 2 cables sont bien en liaison de continuité.
exemple en schéma si sa peut aidé
schéma du cablage
cable 1 B2.12 cable 2
tc1.a2 {------------------------}| |{--------------------------}tc2.d3


schéma pour mon test

tc1.a2 {---------------------------------------------------------}tc2.d3

en vous proposant ceci:

...............colonne A. .colonne B...colonne C...colonne D…colonne E
ligne 1:...A21110……..tc1................a2...............B2................12G
ligne 2:.. B21110……..tc2................d3...............B2................12D


et si je rajoute une colonne A pour indiqué le repère du câble c'est à dire que 21110 correspond a la même équipotentielle et que la lettre "A" ou "B" correspond juste à spécifié le câble ( le câble 1 et le câble 2)

si pour la colonnne B et C ; D et E je l'ai associé, j'obtiendré:
...................colonne A............colonne B...........colonne C
ligne 1:...........A21110................tc1.a2................B2.12G
ligne 2:...........B21110................tc2.d3................B2.12D

en supprimant la derniere lettre de la colonne C ce qui deviendré B2.12 et de réunir les même valeur dans difféfférente lignes.
ou bien d'utilisé le repère pour faire la continuité
je voudrai savoir déja si vous comprené mon probléme car c'est pas évident à expliqué

zeb
Profil : Modérateur libre
Plus d'informations

Fais un effort sur l'orthographe, ton sujet a été lu une vingtaine de fois à l'heure où je poste, mais vu le mal de crâne pour te relire.....


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
zeb
Profil : Modérateur libre
Plus d'informations

Bon, j'ai un peu regardé ton problème.

Tu n'as pas besoin de t'engager vers la programmation pour ça.
Tu peux le faire avec Excel (pas forcément facilement).

Mais ce n'est plus de la programmation. [:spamafote]
Voir alors sur le forum Logiciel par exemple.

Tu peux aussi vouloir le faire par macro VBA. C'est ton droit :)
Voir ce forum.

Donc quelle est la question ? (Interdit de répondre : le programme tout fait !)


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

Désolé pour mon orthographe ,
mon programme réel, j'utilise :
colonne A correspond au nom de mon connecteur
colonne C correspond a la broche du connecteur
colonne B correspond à le nom d'un bornier
colonne D correspond à a un borne du bornier la terminaison "D" ou "G" n'a aucune importance.


Lorsque j'ai que des connecteurs jarrive a obtenir <>(tc1.a2)(TC2.d3) (par exemple) en utilisant ceci:

Code :
  1. Sub Calcul()
  2. '
  3. '
  4.     Application.ScreenUpdating = False
  5.     Columns("A:A" ).Select
  6.     Selection.Insert Shift:=xlToRight
  7.     Columns("C:C" ).Select
  8.     Selection.Insert Shift:=xlToRight
  9.     Columns("E:E" ).Select
  10.     Selection.Insert Shift:=xlToRight
  11.     Columns("G:G" ).Select
  12.     Selection.Insert Shift:=xlToRight
  13.     Columns("H:H" ).Select
  14.     ActiveWindow.SmallScroll Down:=-9
  15.     Columns("D:D" ).Select
  16.     Selection.Cut Destination:=Columns("I:I" )
  17.     Columns("F:F" ).Select
  18.     Selection.Cut Destination:=Columns("D:D" )
  19.     Columns("I:I" ).Select
  20.     Selection.Cut Destination:=Columns("F:F" )
  21.     Columns("F:F" ).Select
  22.     Rows("1:1" ).Select
  23.     Selection.Delete Shift:=xlUp
  24.     Range("A1" ).Select
  25.     ActiveCell.FormulaR1C1 = "<>("
  26.     Selection.AutoFill Destination:=Range("A1:A65536" ), Type:=xlFillDefault
  27.     Range("A1:A9" ).Select
  28.     Range("C1" ).Select
  29.     ActiveCell.FormulaR1C1 = "."
  30.     Selection.AutoFill Destination:=Range("C1:C65536" ), Type:=xlFillDefault
  31.     Range("C1:C14" ).Select
  32.     Range("E1" ).Select
  33.     ActiveCell.FormulaR1C1 = " )("
  34.     Selection.AutoFill Destination:=Range("E1:E65536" ), Type:=xlFillDefault
  35.     Range("E1:E16" ).Select
  36.     Range("G1" ).Select
  37.     ActiveCell.FormulaR1C1 = "."
  38.     Selection.AutoFill Destination:=Range("G1:G65536" ), Type:=xlFillDefault
  39.     Range("G1:G19" ).Select
  40.     Range("I1" ).Select
  41.     ActiveCell.FormulaR1C1 = " )"
  42.     Selection.AutoFill Destination:=Range("I1:I65536" ), Type:=xlFillDefault
  43.     Range("I1:I22" ).Select
  44.     Columns("A:A" ).Select
  45.     Selection.Insert Shift:=xlToRight
  46.     Columns("A:J" ).Select
  47.     Selection.Interior.ColorIndex = 2
  48.     Columns("A:J" ).Select
  49.     Selection.Borders(xlDiagonalDown).LineStyle = xlNone
  50.     Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  51.     With Selection.Borders(xlEdgeLeft)
  52.         .LineStyle = xlContinuous
  53.         .Weight = xlThick
  54.         .ColorIndex = 11
  55.     End With
  56.     With Selection.Borders(xlEdgeTop)
  57.         .LineStyle = xlContinuous
  58.         .Weight = xlThick
  59.         .ColorIndex = 11
  60.     End With
  61.     With Selection.Borders(xlEdgeBottom)
  62.         .LineStyle = xlContinuous
  63.         .Weight = xlThick
  64.         .ColorIndex = 11
  65.     End With
  66.     With Selection.Borders(xlEdgeRight)
  67.         .LineStyle = xlContinuous
  68.         .Weight = xlThick
  69.         .ColorIndex = 11
  70.     End With
  71.     With Selection.Borders(xlInsideHorizontal)
  72.         .LineStyle = xlContinuous
  73.         .Weight = xlThin
  74.         .ColorIndex = 11
  75.     End With
  76.     Range("A1" ).Select
  77.       Sheets("Feuil4" ).Visible = True
  78.     Sheets("Feuil4" ).Select
  79.     Dim Lig    As Long
  80.   Dim Col    As String
  81.   Dim NbrLig  As Long
  82.   Dim NumLig  As Long
  83.  
  84.   Sheets("Feuil4" ).Activate ' feuille de destination
  85.  
  86.   Col = "C"                ' colonne de la donnée non vide à tester
  87.   NumLig = 0
  88.   With Sheets("feuil1" )    ' feuille source
  89.   NbrLig = .Cells(65536, Col).End(xlUp).Row
  90.   For Lig = 1 To NbrLig
  91.     If .Cells(Lig, Col).Value <> "" Then
  92.       .Cells(Lig, Col).EntireRow.Copy
  93.       NumLig = NumLig + 1
  94.       Cells(NumLig, 1).Select
  95.       ActiveSheet.Paste
  96.     End If
  97.   Next
  98.   End With
  99.       ActiveWindow.DisplayGridlines = False
  100.     Columns("B:B" ).EntireColumn.AutoFit
  101.     Columns("C:C" ).EntireColumn.AutoFit
  102.     Columns("D:D" ).EntireColumn.AutoFit
  103.     Columns("E:E" ).EntireColumn.AutoFit
  104.     Columns("F:F" ).ColumnWidth = 10.86
  105.     Columns("F:F" ).EntireColumn.AutoFit
  106.     Columns("G:G" ).EntireColumn.AutoFit
  107.     Columns("H:H" ).EntireColumn.AutoFit
  108.     Columns("I:I" ).EntireColumn.AutoFit
  109.     Columns("J:J" ).EntireColumn.AutoFit
  110.     Cells.Select
  111.     With Selection
  112.         .HorizontalAlignment = xlCenter
  113.         .VerticalAlignment = xlBottom
  114.         .WrapText = False
  115.         .Orientation = 0
  116.         .AddIndent = False
  117.         .ShrinkToFit = False
  118.         .MergeCells = False
  119.     End With
  120.     Range("A1" ).Select
  121.     Sheets("Feuil1" ).Select
  122.     Sheets("Feuil1" ).Visible = False
  123.     Sheets("Feuil4" ).Select
  124.     Range("G1" ).Select



Ma question est de savoir comment faire le lien lorsque l'on a un bornier, quelle écriture utiliser ?
merci de ton aide.

zeb
Profil : Modérateur libre
Plus d'informations

Quelle horreur ce code !

(Oui, je sais 1°, tu es débutant, 2°, la moitié de ce code a été écrit par l'enregistreur de macro de EXCEL)

Tiens regarde, les n premières lignes en mieux ;) (C'est pas pour te vexer hein.)

Code :
  1. Columns("A" ).Insert Shift:=xlToRight
  2. Columns("C" ).Insert Shift:=xlToRight
  3. Columns("E" ).Insert Shift:=xlToRight
  4. Columns("G" ).Insert Shift:=xlToRight
  5. Columns("D" ).Cut Destination:=Columns("I" )
  6. Columns("F" ).Cut Destination:=Columns("D" )
  7. Columns("I" ).Cut Destination:=Columns("F" )
  8. Rows("1" ).Delete Shift:=xlUp
  9. Range("A1" ).FormulaR1C1 = "<>("


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
zeb
Profil : Modérateur libre
Plus d'informations

Bon alors moi, je ferais autrement.

1ère partie :

Code :
  1. Dim row As Long
  2. Dim patte As String
  3. 'Grosse boucle
  4. For row = 1 To 65535
  5.   'Fin de la boucle - A adapter
  6.   'On s'arrête dès qu'on rencontre une cellule vide.
  7.   If Cells(row, 1).Text = "" Then Exit For
  8.   'ABCDEFGHIJ
  9.   '123456789X
  10.   ' Les pattes sont dans la colonne D (=4)
  11.   patte = Cells(row, 4)
  12.   If Right(patte, 1) = "D" Or Right(patte, 1) = "G" Then patte = Mid(patte, 1, Len(patte) - 1)
  13.   'Dans la colonne F (=6), on met le bornier de la colonne C (=3), un point et sa patte
  14.   Cells(row, 6).Value = Cells(row, 3).Text & "." & patte
  15.   'Pareil pour le connecteur et ses pattes que l'on met dans la colonne G (=7)
  16.   Cells(row, 7).Value = Cells(row, 1).Text & "." & Cells(row, 2).Text
  17. Next


Message édité par zeb le 21-03-2007 à 17:03:07

---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
zeb
Profil : Modérateur libre
Plus d'informations

Deuxième partie : Trier le bloc F:G

Code :
  1. Columns("F:G" ).Sort Key1:=Range("F1" )


Tu aurais du savoir le faire sans mon aide !
Tu veux donc que je fasse tout ton boulot ?


Message édité par zeb le 21-03-2007 à 16:58:17

---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
zeb
Profil : Modérateur libre
Plus d'informations

3ème partie : Regarde comme c'est beau.

Code :
  1. 'Mr Proper
  2. Columns("H" ).Clear
  3. s = ""
  4. 'Grosse boucle
  5. For row = 1 To 65535
  6.   'Fin de la boucle - Toujours à adapter
  7.   'On s'arrête dès qu'on rencontre une cellule vide.
  8.   If Cells(row, 6).Text = "" Then Exit For
  9.  
  10.   If Cells(row, 6).Text <> Cells(row + 1, 6).Text Then
  11.     'Rupture !
  12.     Cells(row, 8).Value = "<>" & s
  13.     s = ""
  14.   Else
  15.     'Pas de rupture
  16.     s = s & "(" & Cells(row, 7).Text & " )"
  17.   End If
  18.  
  19. Next
  20. 'Suppression des données temporaires
  21. Columns("F:G" ).Clear
  22.    
  23. 'Tri
  24. Columns("H" ).Sort Key1:=Range("H1" )


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

merci ,
c'est vrai que le début c'est beaucoup mieux,bon je vais essayer de trouvé le lien avec mon bornier.
A plus tard et merci.

zeb
Profil : Modérateur libre
Plus d'informations

M'enfin, la soluce proposée ne marche pas ?


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

non pour le moment j'ai u le temps que de m'occupé de la première partie désolé mais je vais m'occuper du reste la car il faut en même temps bien que je voye et comprenne ce que tu a marqué car pour moi ce n'est pas forcément évident ! (débutant)

Plus d'informations

merci cela marche, mais quelques soucis c'est à dire avec le programme j'obtient ceci a un certain moment :
<>(B33.8B) (MASSE73.%1)
<>(B33.8A) (CM-XJ3.Z20)
<>(B33.7B) (B33.8B)
<>(B33.7A) (CM-XJ3.Z26)

les (B33.8A) et (B33.8B) sont en liaisons tout comme les "7A" et "7B"
peut-on enlevé simplement la lettre à la fin pour qu'il puisse reconnaître que c'est le même point?
es-ce possible de dire :
<>(MASSE73.%1) (CM-XJ3.Z20)
<> (CM-XJ3.Z26)

et d'autre par lorsque que j'obtient plusieur comme:
<>(B2.57G) (CM-XB4.Z12)
<> (CF-TC6.H1)
<>(B2.57D) (CM-XB5.B30)

m'écrire :
<>(B2.57G) (CM-XB4.Z12)
<> (CF-TC6.H1)
<> (CM-XB5.B30)
ou m'écrire comme ceci :(ceux qui m'arrangerai beaucoup plus)
<>(CM-XB4.Z12) (CF-TC6.H1)
<> (CM-XB5.B30)

es-ce possible ?
mais je tiens comme même à te remercier pour ce que tu ma passé déjà ça m'avance un peu plus.

zeb
Profil : Modérateur libre
Plus d'informations

A la ligne 15 du premier code :

Code :
  1. If Right(patte, 1) = "D" Or Right(patte, 1) = "G" Then patte = Mid(patte, 1, Len(patte) - 1)


La fonction Mid permet de prendre la valeur moins le dernier caractère.
J'orai pu écrire

Code :
  1. If Right(patte, 1) = "D" Or Right(patte, 1) = "G" Then patte = Left(patte, Len(patte) - 1)



Bon, j'ai fais des tests pour ne retirer qu'un G ou un D. S'il te convient de virer les A, les B ou toutes lettres, c'est cette ligne qu'il te faut adapter.


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

merci pour tout,
je vais continué seul enfin je vais essayer car pour toi ça semble peut-être évident mais pour moi c'est un vrai casse-tête :d
je sais que sur ce forum il y aura toujours des gens pour résoudre les problémes de chaque personne
merci zeb d'avoir sacrifié un peu de ton temps mon sujet pas évident
bonne continuation à tous !


Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » VB / VBA / VBS » aide pour tranfére de données en VBA
 

Annonces Google
Publicité