Boucle concatener avec controle de plage

Le
Alex
Bonjour à tous,

Je rencontre un problème 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ésultat de ma concatenation.

La concatenation se fait en deux temps :

La première concatenation s'effectue sur une recherche de valeur 1
sur la plage R75 à R83, là ou se trouve 1, il faut prendre la valeur
de la colonne précédente 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ée
en V65 dès lors que la valeur est différente de rien. Si different de
rien alors il faut refaire une recherche de la valeur 1 sur la plage
V67 à V75 qu'il prenne la valeur de la colonne précédente 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ées et cela jusq'à ce qu'il trouve
en x65 aucune données.
A cotre disposition pour plus d'info.
Merci par avance de votre aide.
Bien cordialement.
Alex
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Alex
Le #24189531
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
Alex
Le #24189701
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
Publicité
Poster une réponse
Anonyme