Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Boucle concatener avec controle de plage

2 réponses
Avatar
Alex
Bonjour =E0 tous,

Je rencontre un probl=E8me sur une boucle de concatenation avec des
controles de valeur sur des plages, et souhaiterais avoir une aide, et
m'en explique :

En A1, je souhaiterai avoir le r=E9sultat de ma concatenation.

La concatenation se fait en deux temps :

La premi=E8re concatenation s'effectue sur une recherche de valeur 1
sur la plage R75 =E0 R83, l=E0 ou se trouve 1, il faut prendre la valeur
de la colonne pr=E9c=E9dente de la ligne ou le 1 se trouve + R89 + R90
La deuxieme partie de la concatenation est facultative et doit etre
sous forme de boucle, en fonction de la presence ou pas d'une donn=E9e
en V65 d=E8s lors que la valeur est diff=E9rente de rien. Si different de
rien alors il faut refaire une recherche de la valeur 1 sur la plage
V67 =E0 V75 qu'il prenne la valeur de la colonne pr=E9c=E9dente de la ligne
ou le 1 se trouve + V80 et 81 + Valeur de la premiere concatenation,
puis il verifie toujours sur la meme plage mais avec une colonne en
plus si y a ou non presence de donn=E9es et cela jusq'=E0 ce qu'il trouve
en x65 aucune donn=E9es.
A cotre disposition pour plus d'info.
Merci par avance de votre aide.
Bien cordialement.
Alex

2 réponses

Avatar
Alex
Voici ce que j'ai écrit :

sub test ()
Dim nomlot As String
Dim x As Integer
x = ActiveCell.Column




If Range("R66").Value <> "" Then
Range("R75:R83").Select
Selection.Find(What:="1", After:¬tiveCell, LookIn:=xlFormulas,
LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False, SearchFormat:úlse).Activate
ActiveCell.Select
ActiveCell.Offset(0, -1).Range("A1").Select
ActiveCell.Name = "NomLot"
Range("A1").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(Nomlot,"" N° LOT Ulis :
"",R[67]C[15], "" N° LOT Copro : "", R[68]C[15])"
End If
Range("V65").Select
x = 22
Recommencer:
If Cells(65, x).Value <> "" Then
Range.Cells("67,x:75,x").Select 'Ici ma formulation de plage n'est pas
bonne ????
Selection.Find(What:="1", After:¬tiveCell, LookIn:=xlFormulas,
LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False, SearchFormat:úlse).Activate
ActiveCell.Select
ActiveCell.Offset(0, -1).Range("A1").Select 'Ici vu que mon x
augemente de 1 comment faire pour lui dire que -1 devient -2 lors du
second passage de la boucle
ActiveCell.Name = "NomLot"
Range("A1").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(ActiveCell.value, " - ",
Nomlot,"" N° LOT Ulis : "",R[67]C[15], "" N° LOT Copro : "",
R[68]C[15])"
x = x + 1
GoTo Recommencer
End If
end sub


Avec cela je conince sur ma formulation de la ligne :
Range.Cells("67,x:75,x").Select
Si mon x prend 1 en plus a chque boucle, alors ma ligne
ActiveCell.Offset(0, -1).Range("A1").Select devrait être offset(0,-2)
comment lui faire augementer la donnée offset afin qui prennent la
valeur de ma colonne qui reste fixe ?

Merci par avance de votre aide.
Cordialement.
Alex
Avatar
Alex
Re :

J'ai corrigé mes lignes et j'obtiens ceci :

Dim nomlot As String
Dim x As Integer
Dim y As Integer
Dim c22 As String
x = ActiveCell.Column




If Range("R66").Value <> "" Then
Range("R75:R83").Select
Selection.Find(What:="1", After:¬tiveCell, LookIn:=xlFormulas,
LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False, SearchFormat:úlse).Activate
ActiveCell.Select
ActiveCell.Offset(0, -1).Range("A1").Select
ActiveCell.Name = "NomLot"
Range("A1").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(Nomlot,"" N° LOT Ulis :
"",R[67]C[15], "" N° LOT Copro : "", R[68]C[15])"

Range("A1").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
ActiveSheet.Paste
Application.CutCopyMode = False
End If


Range("V65").Select
x = 22
y = 1
Recommencer:

If Cells(65, x).Value <> "" Then
c22 = Range("A1").Value

Range(Cells(67, x), Cells(75, x)).Select

Selection.Find(What:="1", After:¬tiveCell, LookIn:=xlFormulas,
LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False, SearchFormat:úlse).Activate
ActiveCell.Select

ActiveCell.Offset(0, -y).Range("A1").Select
ActiveCell.Name = "NomLot"
Range("A1").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(c22.value, " - ", Nomlot,"" N°
LOT Ulis : "",range(cells(79,x).value, "" N° LOT Copro : "",
Range(cells(80,x).value)"
x = x + 1
y = y + 1

GoTo Recommencer
End If

Mon problème n'est plus que sur le concatener dans ma boucle. Je pense
qu'il beug sur le fait de mettre la valeur de la cellule alors que
celle ci est déjà remplacer par la formule concatener. J'ai tenté de
mettre en memoire le contenu de la cellule avant de mettre la formule
concatener, mais je bloque comme meme. Quelqu'un verrait il une
solution à mon problème.
Cordialement.
Alex