Polygos
-
Modifié le 30 août 2019 à 19:37
vb95
Messages postés3418Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023
-
31 août 2019 à 00:17
Bonjour
quand on galère, on demande de l'aide, car on ne voit plus rien.
pour ajouter un caractère sur une chaine j'utilise &.
Dans ce cas, j'ai une chaine qui génère une suite avec séparateurs ///
il s'agir de colonnes qui comprennent des O là ou la colonne est appliquée; un tableau de caractéristiques en somme..
La valeur de la cellule produite est donc la concaténation des titres des colonnes ou on trouve la valeur "O" (cellules 6, col - 4, col et 5, col), séparés par un séparateur ///
Donc je code
For Lig = 8 To DL
For Col = 128 To 144
If Cells(Lig, Col) = "O" Then
Cells(Lig, 19) = Cells(6, Col) & "///" & Cells(Lig, 19) 'Ru
Cells(Lig, 20) = Cells(4, Col) & "///" & Cells(Lig, 20) 'En
Cells(Lig, 21) = Cells(5, Col) & "///" & Cells(Lig, 21) 'Fr
Else
End If
Next Col
Next Lig
Ce qui me donne titre colonne col///titre colonne suivante etc. dès lors que la valeur O se trouve bien à l'intersection de la ligne du produit et de la colonne sondée
Mais en faisant ça le dernier caractère est forcément ///
et ça je ne voudrais pas.
Comment oter ce dernier /// ?
Pour les 2 autres lignes le raisonnement est le même
Si
Cells(Lig, 19)
est vide on ajoute les \\\ à la fin
Donc si la cellule est vide il ne faut pas mettre les \\\
donc il faut tester à chaque fois si la Cellule est vide car on ne sait pas où
Cells(Lig, Col) = "O"
J'ai fait une Sub pour ne pas répéter 3 fois le même traitement (il n 'y a que 2 numéros qui changent => 19-6 puis 20-4 puis 21-5 )
Le code ( sous toute réserve )
For Lig = 8 To DL
For Col = 128 To 144
If Cells(Lig, Col) = "O" Then
GetCellule(Lig, Col, 19, 6) ' Ru
GetCellule(Lig, Col, 20, 4) ' En
GetCellule(Lig, Col, 21, 5) ' Ru
End If
Next Col
Next Lig
' Sub pour les 3 lignes de code avec GetCellule
Private Sub GetCellule(Ligne as Integer, Colonne as Integer, NumCol as Integer, NumLig as Integer
Dim Slash as String = "\\\" ' on suppose qu'il y a les 3 \\\
If Cells(Ligne, NumCol) = "" Then Slash = "" ' si cellule vide pas de \\\
Cells(Ligne, NumCol) = Cells(NumLig, Colonne) & Slash & Cells(Ligne, NumCol)
End sub