aide pour tranfére de données en VBA

  • Auteur de la discussion squal17
  • Date de début

squal17

Nouveau membre
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.
 

squal17

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

Modérateur
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.....
 

zeb

Modérateur
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 !)
 

squal17

Nouveau membre
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:
[cpp]Sub Calcul()
'
'
Application.ScreenUpdating = False
Columns("A:A").Select
Selection.Insert Shift:=xlToRight
Columns("C:C").Select
Selection.Insert Shift:=xlToRight
Columns("E:E").Select
Selection.Insert Shift:=xlToRight
Columns("G:G").Select
Selection.Insert Shift:=xlToRight
Columns("H:H").Select
ActiveWindow.SmallScroll Down:=-9
Columns("D:D").Select
Selection.Cut Destination:=Columns("I:I")
Columns("F:F").Select
Selection.Cut Destination:=Columns("D:D")
Columns("I:I").Select
Selection.Cut Destination:=Columns("F:F")
Columns("F:F").Select
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Range("A1").Select
ActiveCell.FormulaR1C1 = "<>("
Selection.AutoFill Destination:=Range("A1:A65536"), Type:=xlFillDefault
Range("A1:A9").Select
Range("C1").Select
ActiveCell.FormulaR1C1 = "."
Selection.AutoFill Destination:=Range("C1:C65536"), Type:=xlFillDefault
Range("C1:C14").Select
Range("E1").Select
ActiveCell.FormulaR1C1 = ")("
Selection.AutoFill Destination:=Range("E1:E65536"), Type:=xlFillDefault
Range("E1:E16").Select
Range("G1").Select
ActiveCell.FormulaR1C1 = "."
Selection.AutoFill Destination:=Range("G1:G65536"), Type:=xlFillDefault
Range("G1:G19").Select
Range("I1").Select
ActiveCell.FormulaR1C1 = ")"
Selection.AutoFill Destination:=Range("I1:I65536"), Type:=xlFillDefault
Range("I1:I22").Select
Columns("A:A").Select
Selection.Insert Shift:=xlToRight
Columns("A:J").Select
Selection.Interior.ColorIndex = 2
Columns("A:J").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 11
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 11
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 11
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 11
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 11
End With
Range("A1").Select
Sheets("Feuil4").Visible = True
Sheets("Feuil4").Select
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long

Sheets("Feuil4").Activate ' feuille de destination

Col = "C" ' colonne de la donnée non vide à tester
NumLig = 0
With Sheets("feuil1") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig
If .Cells(Lig, Col).Value <> "" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig, 1).Select
ActiveSheet.Paste
End If
Next
End With
ActiveWindow.DisplayGridlines = False
Columns("B:B").EntireColumn.AutoFit
Columns("C:C").EntireColumn.AutoFit
Columns("D:D").EntireColumn.AutoFit
Columns("E:E").EntireColumn.AutoFit
Columns("F:F").ColumnWidth = 10.86
Columns("F:F").EntireColumn.AutoFit
Columns("G:G").EntireColumn.AutoFit
Columns("H:H").EntireColumn.AutoFit
Columns("I:I").EntireColumn.AutoFit
Columns("J:J").EntireColumn.AutoFit
Cells.Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
Range("A1").Select
Sheets("Feuil1").Select
Sheets("Feuil1").Visible = False
Sheets("Feuil4").Select
Range("G1").Select[/cpp]

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

zeb

Modérateur
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:
Columns("A").Insert Shift:=xlToRight
Columns("C").Insert Shift:=xlToRight
Columns("E").Insert Shift:=xlToRight
Columns("G").Insert Shift:=xlToRight
Columns("D").Cut Destination:=Columns("I")
Columns("F").Cut Destination:=Columns("D")
Columns("I").Cut Destination:=Columns("F")
Rows("1").Delete Shift:=xlUp
Range("A1").FormulaR1C1 = "<>("
 

zeb

Modérateur
Bon alors moi, je ferais autrement.

1ère partie :
Code:
Dim row As Long
Dim patte As String

'Grosse boucle
For row = 1 To 65535
  'Fin de la boucle - A adapter
  'On s'arrête dès qu'on rencontre une cellule vide.
  If Cells(row, 1).Text = "" Then Exit For

  'ABCDEFGHIJ
  '123456789X

  ' Les pattes sont dans la colonne D (=4)
  patte = Cells(row, 4)
  If Right(patte, 1) = "D" Or Right(patte, 1) = "G" Then patte = Mid(patte, 1, Len(patte) - 1)

  'Dans la colonne F (=6), on met le bornier de la colonne C (=3), un point et sa patte
  Cells(row, 6).Value = Cells(row, 3).Text & "." & patte

  'Pareil pour le connecteur et ses pattes que l'on met dans la colonne G (=7)
  Cells(row, 7).Value = Cells(row, 1).Text & "." & Cells(row, 2).Text
Next
 

zeb

Modérateur
Deuxième partie : Trier le bloc F:G
Code:
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 ?
 

zeb

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

Code:
'Mr Proper
Columns("H").Clear

s = ""
'Grosse boucle
For row = 1 To 65535
  'Fin de la boucle - Toujours à adapter
  'On s'arrête dès qu'on rencontre une cellule vide.
  If Cells(row, 6).Text = "" Then Exit For
  
  If Cells(row, 6).Text <> Cells(row + 1, 6).Text Then
    'Rupture !
    Cells(row, 8).Value = "<>" & s
    s = ""
  Else
    'Pas de rupture
    s = s & "(" & Cells(row, 7).Text & ")"
  End If
  
Next

'Suppression des données temporaires
Columns("F:G").Clear
    
'Tri
Columns("H").Sort Key1:=Range("H1")
 

squal17

Nouveau membre
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.
 

squal17

Nouveau membre
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)
 

squal17

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

Modérateur
A la ligne 15 du premier code :
Code:
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:
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.
 

squal17

Nouveau membre
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 !
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 132
Messages
6 718 002
Membres
1 586 388
Dernier membre
mery2005
Partager cette page
Haut