Amandineuh
XLDnaute Nouveau
Bonjour à tous,
Toujours en quête d'apprentissage, je reviens à la charge avec 1 soucis, et une petite bricole ...
J'ai crée un classeur (ClasseurAPPRENDRE.xls) joins à mon post pour montrer et illustrer mes difficultés.
1)
Je voudrais mettre en place une concaténation de 2 colonnes vers une seule(séparée par un " x"). J'ai tenté 2 façon de faire :
Celle ci fonctionne uniquement quand je définis un range fixe (Range("B2:B10"), mais le nombre de mes lignes peut varier, du coup j'ai tenter l'adressage d'une plage variable, mais je ramouille tériblement sur ce point.
Je me suis alors dit qu'un boucle While...Loop pourrait faire l'affaire. Elle irait lire sur une colonne de référence, et chaque fois qu'elle trouverait un champ non vide, elle passerait à la ligne du dessus en disant "tu peux concaténer". Et dès qu'elle trouverait un champs vide, elle dirait "Stop ! plus de concaténation j'ai rein trouvée".
Donc ma tentative à donné ceci :
J'ai cherchée à droite et à gauche, et comme je sais que les opération de concaténation sont gourmandes en ressources mémoires j'ai même tentée la déclaration de variable via un tableau ! (mais mon niveau ne me permet pas cette liberté malheureusement ).
2)
le second point doit être réglé par une propriété, mais j'ignore laquelle (là encore mon soucis est illustré dans le fichier joins).
Après avoir importée la même colonne (qui contient un code de 17 caractère) dans 3 colonnes différentes, j'applique les fonctions de chaîne de caractère pour extraire la partie du code qu'il me faut.
Le code est vilain, mais ça donne des résultats.
Mais malheureusement, excel passe à la trappe tous les "0" rendant mon code erroné (quand je devrais avoir "0007", j'ai "7" après extraction sur la chaîne).
J’espère ne pas trop vous en demandez, et vous pouvez avoir l'assurance que j'ai cherchée la solution par moi même et me suis documenté le plus possible pour régler ça.
Par avance merci à ceux qui passeront par là
Amandine.
Toujours en quête d'apprentissage, je reviens à la charge avec 1 soucis, et une petite bricole ...
J'ai crée un classeur (ClasseurAPPRENDRE.xls) joins à mon post pour montrer et illustrer mes difficultés.
1)
Je voudrais mettre en place une concaténation de 2 colonnes vers une seule(séparée par un " x"). J'ai tenté 2 façon de faire :
Code:
'1ere tentative de concaténation avec boucle For...Next
Sub Concat1()
Dim Cell As Range
For Each Cell In Range(Cells(4, 2), Cells(Rows.Count, 2).End(xlUp).Row)
Cell = (Cell.Offset(0, 4) & " x " & Cell.Offset(0, 5))
Next
End Sub
Je me suis alors dit qu'un boucle While...Loop pourrait faire l'affaire. Elle irait lire sur une colonne de référence, et chaque fois qu'elle trouverait un champ non vide, elle passerait à la ligne du dessus en disant "tu peux concaténer". Et dès qu'elle trouverait un champs vide, elle dirait "Stop ! plus de concaténation j'ai rein trouvée".
Donc ma tentative à donné ceci :
Code:
'2ème tentative de concaténation avec boucle Do While... sur colonne référence
Sub Concat2()
Range("E4").Select 'j'ai pris une référence colonne dont je sais qu'elle est fiable (j'aurais put prendre une des col à concaténer puisque c'est ratraper par l'offset
Do While ActiveCell <> "" 'Loops until the active cell is blank.
ActiveCell.Offset(0, -3).FormulaR1C1 = _
ActiveCell.Offset(0, 1) & " x " & ActiveCell.Offset(0, 2)
Loop
End Sub
J'ai cherchée à droite et à gauche, et comme je sais que les opération de concaténation sont gourmandes en ressources mémoires j'ai même tentée la déclaration de variable via un tableau ! (mais mon niveau ne me permet pas cette liberté malheureusement ).
2)
le second point doit être réglé par une propriété, mais j'ignore laquelle (là encore mon soucis est illustré dans le fichier joins).
Après avoir importée la même colonne (qui contient un code de 17 caractère) dans 3 colonnes différentes, j'applique les fonctions de chaîne de caractère pour extraire la partie du code qu'il me faut.
Code:
Sub tronquer_valeurs()
ThisWorkbook.Worksheets("Feuil1").Activate
Dim Cell As Variant 'ID
Range("B24").Select
For Each Cell In Range(Selection, Selection.End(xlDown))
Cell.Formula = Left(Cell.Formula, 5)
Next
Range("C24").Select 'LONGEUR
For Each Cell In Range(Selection, Selection.End(xlDown))
Cell.Formula = Mid(Cell.Formula, 6, 4)
Next
Range("D24").Select 'LARGEUR
For Each Cell In Range(Selection, Selection.End(xlDown))
Cell.Formula = Mid(Cell.Formula, 10, 4)
Next
End Sub
Le code est vilain, mais ça donne des résultats.
Mais malheureusement, excel passe à la trappe tous les "0" rendant mon code erroné (quand je devrais avoir "0007", j'ai "7" après extraction sur la chaîne).
J’espère ne pas trop vous en demandez, et vous pouvez avoir l'assurance que j'ai cherchée la solution par moi même et me suis documenté le plus possible pour régler ça.
Par avance merci à ceux qui passeront par là
Amandine.