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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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:=ActiveCell, LookIn:=xlFormulas,
LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False, SearchFormat:=False).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:=ActiveCell, LookIn:=xlFormulas,
LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False, SearchFormat:=False).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
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
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
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
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:=ActiveCell, LookIn:=xlFormulas,
LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False, SearchFormat:=False).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 _
:=False, Transpose:=False
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
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
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