Bonjour,
Dans le code qui suit, je ne comprends pas pourquoi, je ne peux pas
récupérer les 2 valeurs liées à "x1" et "x2".
Si, j'effectue la procédure en mode pas à pas, si "t" (N° Cde)
n'existe pas dans ma plage "Col_Import", "x2" ne se calcule pas et la
procédure se termine.
Je pensais qu'indépendemment du résultat de x1, je pouvais voir le
résultat pour x2 en survolant la variable avec la souris !
'------------------
t = "N° cde"
s = "NBC"
y = Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
x1 = Range("Import").Find(t, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
x2 = Range("Import").Find(s, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
'------------------
Je crains que cette question soit stupide, mais je n'arrive pas à voir
ce qui cloche !
Merci pour vos lumières,
JP
Bonjour,
Dans le code qui suit, je ne comprends pas pourquoi, je ne peux pas
récupérer les 2 valeurs liées à "x1" et "x2".
Si, j'effectue la procédure en mode pas à pas, si "t" (N° Cde)
n'existe pas dans ma plage "Col_Import", "x2" ne se calcule pas et la
procédure se termine.
Je pensais qu'indépendemment du résultat de x1, je pouvais voir le
résultat pour x2 en survolant la variable avec la souris !
'------------------
t = "N° cde"
s = "NBC"
y = Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
x1 = Range("Import").Find(t, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
x2 = Range("Import").Find(s, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
'------------------
Je crains que cette question soit stupide, mais je n'arrive pas à voir
ce qui cloche !
Merci pour vos lumières,
JP
Bonjour,
Dans le code qui suit, je ne comprends pas pourquoi, je ne peux pas
récupérer les 2 valeurs liées à "x1" et "x2".
Si, j'effectue la procédure en mode pas à pas, si "t" (N° Cde)
n'existe pas dans ma plage "Col_Import", "x2" ne se calcule pas et la
procédure se termine.
Je pensais qu'indépendemment du résultat de x1, je pouvais voir le
résultat pour x2 en survolant la variable avec la souris !
'------------------
t = "N° cde"
s = "NBC"
y = Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
x1 = Range("Import").Find(t, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
x2 = Range("Import").Find(s, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
'------------------
Je crains que cette question soit stupide, mais je n'arrive pas à voir
ce qui cloche !
Merci pour vos lumières,
JP
bonjour Jp,
si t n'est pas trouvé cela provoque un erreur, as tu mis une gestion d'erreur
dans ton code ?
isabelle
j-pascal a écrit :Bonjour,
Dans le code qui suit, je ne comprends pas pourquoi, je ne peux pas
récupérer les 2 valeurs liées à "x1" et "x2".
Si, j'effectue la procédure en mode pas à pas, si "t" (N° Cde) n'existe pas
dans ma plage "Col_Import", "x2" ne se calcule pas et la procédure se
termine.
Je pensais qu'indépendemment du résultat de x1, je pouvais voir le résultat
pour x2 en survolant la variable avec la souris !
'------------------
t = "N° cde"
s = "NBC"
y = Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
x1 = Range("Import").Find(t, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
x2 = Range("Import").Find(s, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
'------------------
Je crains que cette question soit stupide, mais je n'arrive pas à voir ce
qui cloche !
Merci pour vos lumières,
JP
bonjour Jp,
si t n'est pas trouvé cela provoque un erreur, as tu mis une gestion d'erreur
dans ton code ?
isabelle
j-pascal a écrit :
Bonjour,
Dans le code qui suit, je ne comprends pas pourquoi, je ne peux pas
récupérer les 2 valeurs liées à "x1" et "x2".
Si, j'effectue la procédure en mode pas à pas, si "t" (N° Cde) n'existe pas
dans ma plage "Col_Import", "x2" ne se calcule pas et la procédure se
termine.
Je pensais qu'indépendemment du résultat de x1, je pouvais voir le résultat
pour x2 en survolant la variable avec la souris !
'------------------
t = "N° cde"
s = "NBC"
y = Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
x1 = Range("Import").Find(t, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
x2 = Range("Import").Find(s, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
'------------------
Je crains que cette question soit stupide, mais je n'arrive pas à voir ce
qui cloche !
Merci pour vos lumières,
JP
bonjour Jp,
si t n'est pas trouvé cela provoque un erreur, as tu mis une gestion d'erreur
dans ton code ?
isabelle
j-pascal a écrit :Bonjour,
Dans le code qui suit, je ne comprends pas pourquoi, je ne peux pas
récupérer les 2 valeurs liées à "x1" et "x2".
Si, j'effectue la procédure en mode pas à pas, si "t" (N° Cde) n'existe pas
dans ma plage "Col_Import", "x2" ne se calcule pas et la procédure se
termine.
Je pensais qu'indépendemment du résultat de x1, je pouvais voir le résultat
pour x2 en survolant la variable avec la souris !
'------------------
t = "N° cde"
s = "NBC"
y = Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
x1 = Range("Import").Find(t, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
x2 = Range("Import").Find(s, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
'------------------
Je crains que cette question soit stupide, mais je n'arrive pas à voir ce
qui cloche !
Merci pour vos lumières,
JP
bonjour Jp,
si t n'est pas trouvé cela provoque un erreur, as tu mis une gestion d'erreur
dans ton code ?
isabelle
j-pascal a écrit :Bonjour,
Dans le code qui suit, je ne comprends pas pourquoi, je ne peux pas
récupérer les 2 valeurs liées à "x1" et "x2".
Si, j'effectue la procédure en mode pas à pas, si "t" (N° Cde) n'existe pas
dans ma plage "Col_Import", "x2" ne se calcule pas et la procédure se
termine.
Je pensais qu'indépendemment du résultat de x1, je pouvais voir le résultat
pour x2 en survolant la variable avec la souris !
'------------------
t = "N° cde"
s = "NBC"
y = Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
x1 = Range("Import").Find(t, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
x2 = Range("Import").Find(s, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
'------------------
Je crains que cette question soit stupide, mais je n'arrive pas à voir ce
qui cloche !
Merci pour vos lumières,
JP
bonjour Jp,
si t n'est pas trouvé cela provoque un erreur, as tu mis une gestion d'erreur
dans ton code ?
isabelle
j-pascal a écrit :
Bonjour,
Dans le code qui suit, je ne comprends pas pourquoi, je ne peux pas
récupérer les 2 valeurs liées à "x1" et "x2".
Si, j'effectue la procédure en mode pas à pas, si "t" (N° Cde) n'existe pas
dans ma plage "Col_Import", "x2" ne se calcule pas et la procédure se
termine.
Je pensais qu'indépendemment du résultat de x1, je pouvais voir le résultat
pour x2 en survolant la variable avec la souris !
'------------------
t = "N° cde"
s = "NBC"
y = Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
x1 = Range("Import").Find(t, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
x2 = Range("Import").Find(s, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
'------------------
Je crains que cette question soit stupide, mais je n'arrive pas à voir ce
qui cloche !
Merci pour vos lumières,
JP
bonjour Jp,
si t n'est pas trouvé cela provoque un erreur, as tu mis une gestion d'erreur
dans ton code ?
isabelle
j-pascal a écrit :Bonjour,
Dans le code qui suit, je ne comprends pas pourquoi, je ne peux pas
récupérer les 2 valeurs liées à "x1" et "x2".
Si, j'effectue la procédure en mode pas à pas, si "t" (N° Cde) n'existe pas
dans ma plage "Col_Import", "x2" ne se calcule pas et la procédure se
termine.
Je pensais qu'indépendemment du résultat de x1, je pouvais voir le résultat
pour x2 en survolant la variable avec la souris !
'------------------
t = "N° cde"
s = "NBC"
y = Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
x1 = Range("Import").Find(t, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
x2 = Range("Import").Find(s, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
'------------------
Je crains que cette question soit stupide, mais je n'arrive pas à voir ce
qui cloche !
Merci pour vos lumières,
JP
Bonjour,
Dans le code qui suit, je ne comprends pas pourquoi, je ne peux pas
récupérer les 2 valeurs liées à "x1" et "x2".
Si, j'effectue la procédure en mode pas à pas, si "t" (N° Cde) n'existe
pas dans ma plage "Col_Import", "x2" ne se calcule pas et la procédure se
termine.
Je pensais qu'indépendemment du résultat de x1, je pouvais voir le
résultat pour x2 en survolant la variable avec la souris !
'------------------
t = "N° cde"
s = "NBC"
y = Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
x1 = Range("Import").Find(t, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
x2 = Range("Import").Find(s, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
'------------------
Je crains que cette question soit stupide, mais je n'arrive pas à voir ce
qui cloche !
Merci pour vos lumières,
JP
Bonjour,
Dans le code qui suit, je ne comprends pas pourquoi, je ne peux pas
récupérer les 2 valeurs liées à "x1" et "x2".
Si, j'effectue la procédure en mode pas à pas, si "t" (N° Cde) n'existe
pas dans ma plage "Col_Import", "x2" ne se calcule pas et la procédure se
termine.
Je pensais qu'indépendemment du résultat de x1, je pouvais voir le
résultat pour x2 en survolant la variable avec la souris !
'------------------
t = "N° cde"
s = "NBC"
y = Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
x1 = Range("Import").Find(t, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
x2 = Range("Import").Find(s, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
'------------------
Je crains que cette question soit stupide, mais je n'arrive pas à voir ce
qui cloche !
Merci pour vos lumières,
JP
Bonjour,
Dans le code qui suit, je ne comprends pas pourquoi, je ne peux pas
récupérer les 2 valeurs liées à "x1" et "x2".
Si, j'effectue la procédure en mode pas à pas, si "t" (N° Cde) n'existe
pas dans ma plage "Col_Import", "x2" ne se calcule pas et la procédure se
termine.
Je pensais qu'indépendemment du résultat de x1, je pouvais voir le
résultat pour x2 en survolant la variable avec la souris !
'------------------
t = "N° cde"
s = "NBC"
y = Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
x1 = Range("Import").Find(t, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
x2 = Range("Import").Find(s, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
'------------------
Je crains que cette question soit stupide, mais je n'arrive pas à voir ce
qui cloche !
Merci pour vos lumières,
JP
Bonjour J-Pascal,
Pour définir le nom d'une variable, tu as droit à 255 caractères.
Tu dois éviter d'utiliser un mot réservé par le code VBA et
une adresse de cellule comme X1 et X2 comme nom pour
tes variables. Cela évite de confondre Excel.
Deuxièmement, un exemple d'une gestion d'erreur
'-----------------------------
Sub test ()
Dim Gestion_Erreur as string
On error goto gestion_erreur
Ton code
Exit sub
Gestion_Erreur:
Err.clear
'Message n'est pas obligatoire
Msgbox Err.Number & " ' " & err.Description
On error resume next
end Sub
'-----------------------------
"j-pascal" a écrit dans le message de groupe de
discussion : Bonjour Isabelle,
Ceci semble fonctionner, mais c'est une usine à gaz, ce qui me désole.
Ma solution (sous réserve qu'elle ne dissimule pas d'erreurs que je
n'aurais pas vues ...) est lamentable :
'-------
Sub PlageACopier()
Dim x1 As Integer
Dim x2
Dim x
Dim y 'As Integer
Dim n 'As Integer erreur ???
Dim AdrPlageImport
Dim t
Dim s
t = "N° cde"
s = "NBC"
y =
Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
Stop
On Error GoTo r1
x1 = Range("Col_Import").Find(t, Range("Col_Import").Item(1),
xlFormulas, xlWhole, xlByRows, xlNext, False, False).Row + 1
GoTo r2
r1:
x1 = 0
r2:
On Error GoTo r3
x2 = Range("Col_Import").Find(s, Range("Col_Import").Item(1),
xlFormulas, xlWhole, xlByRows, xlNext, False, False).Row + 1
GoTo r4
r3:
x2 = 0
r4:
If x1 > 0 Then
x = Range("Import").Find(t, Range("Import").Item(1),
xlFormulas, xlWhole, xlByRows, xlNext, False, False).Row + 1
Else
x = Range("Import").Find(s, Range("Import").Item(1),
xlFormulas, xlWhole, xlByRows, xlNext, False, False).Row + 1
End If
AdrPlageImport = Range(Cells(x, 1), Cells(y, 7)).Address '[g4]
= Range(Cells(x, 1), Cells(y, 7)).Address
Range(AdrPlageImport).Copy
End sub
'-------bonjour Jp,
si t n'est pas trouvé cela provoque un erreur, as tu mis une gestion
d'erreur dans ton code ?
isabelle
j-pascal a écrit :Bonjour,
Dans le code qui suit, je ne comprends pas pourquoi, je ne peux pas
récupérer les 2 valeurs liées à "x1" et "x2".
Si, j'effectue la procédure en mode pas à pas, si "t" (N° Cde) n'existe pas
dans ma plage "Col_Import", "x2" ne se calcule pas et la procédure se
termine.
Je pensais qu'indépendemment du résultat de x1, je pouvais voir le résultat
pour x2 en survolant la variable avec la souris !
'------------------
t = "N° cde"
s = "NBC"
y = Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
x1 = Range("Import").Find(t, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
x2 = Range("Import").Find(s, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
'------------------
Je crains que cette question soit stupide, mais je n'arrive pas à voir ce
qui cloche !
Merci pour vos lumières,
JP
Bonjour J-Pascal,
Pour définir le nom d'une variable, tu as droit à 255 caractères.
Tu dois éviter d'utiliser un mot réservé par le code VBA et
une adresse de cellule comme X1 et X2 comme nom pour
tes variables. Cela évite de confondre Excel.
Deuxièmement, un exemple d'une gestion d'erreur
'-----------------------------
Sub test ()
Dim Gestion_Erreur as string
On error goto gestion_erreur
Ton code
Exit sub
Gestion_Erreur:
Err.clear
'Message n'est pas obligatoire
Msgbox Err.Number & " ' " & err.Description
On error resume next
end Sub
'-----------------------------
"j-pascal" <messages@venir.com> a écrit dans le message de groupe de
discussion : mn.d2197d9485b3055f.81386@venir.com... Bonjour Isabelle,
Ceci semble fonctionner, mais c'est une usine à gaz, ce qui me désole.
Ma solution (sous réserve qu'elle ne dissimule pas d'erreurs que je
n'aurais pas vues ...) est lamentable :
'-------
Sub PlageACopier()
Dim x1 As Integer
Dim x2
Dim x
Dim y 'As Integer
Dim n 'As Integer erreur ???
Dim AdrPlageImport
Dim t
Dim s
t = "N° cde"
s = "NBC"
y =
Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
Stop
On Error GoTo r1
x1 = Range("Col_Import").Find(t, Range("Col_Import").Item(1),
xlFormulas, xlWhole, xlByRows, xlNext, False, False).Row + 1
GoTo r2
r1:
x1 = 0
r2:
On Error GoTo r3
x2 = Range("Col_Import").Find(s, Range("Col_Import").Item(1),
xlFormulas, xlWhole, xlByRows, xlNext, False, False).Row + 1
GoTo r4
r3:
x2 = 0
r4:
If x1 > 0 Then
x = Range("Import").Find(t, Range("Import").Item(1),
xlFormulas, xlWhole, xlByRows, xlNext, False, False).Row + 1
Else
x = Range("Import").Find(s, Range("Import").Item(1),
xlFormulas, xlWhole, xlByRows, xlNext, False, False).Row + 1
End If
AdrPlageImport = Range(Cells(x, 1), Cells(y, 7)).Address '[g4]
= Range(Cells(x, 1), Cells(y, 7)).Address
Range(AdrPlageImport).Copy
End sub
'-------
bonjour Jp,
si t n'est pas trouvé cela provoque un erreur, as tu mis une gestion
d'erreur dans ton code ?
isabelle
j-pascal a écrit :
Bonjour,
Dans le code qui suit, je ne comprends pas pourquoi, je ne peux pas
récupérer les 2 valeurs liées à "x1" et "x2".
Si, j'effectue la procédure en mode pas à pas, si "t" (N° Cde) n'existe pas
dans ma plage "Col_Import", "x2" ne se calcule pas et la procédure se
termine.
Je pensais qu'indépendemment du résultat de x1, je pouvais voir le résultat
pour x2 en survolant la variable avec la souris !
'------------------
t = "N° cde"
s = "NBC"
y = Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
x1 = Range("Import").Find(t, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
x2 = Range("Import").Find(s, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
'------------------
Je crains que cette question soit stupide, mais je n'arrive pas à voir ce
qui cloche !
Merci pour vos lumières,
JP
Bonjour J-Pascal,
Pour définir le nom d'une variable, tu as droit à 255 caractères.
Tu dois éviter d'utiliser un mot réservé par le code VBA et
une adresse de cellule comme X1 et X2 comme nom pour
tes variables. Cela évite de confondre Excel.
Deuxièmement, un exemple d'une gestion d'erreur
'-----------------------------
Sub test ()
Dim Gestion_Erreur as string
On error goto gestion_erreur
Ton code
Exit sub
Gestion_Erreur:
Err.clear
'Message n'est pas obligatoire
Msgbox Err.Number & " ' " & err.Description
On error resume next
end Sub
'-----------------------------
"j-pascal" a écrit dans le message de groupe de
discussion : Bonjour Isabelle,
Ceci semble fonctionner, mais c'est une usine à gaz, ce qui me désole.
Ma solution (sous réserve qu'elle ne dissimule pas d'erreurs que je
n'aurais pas vues ...) est lamentable :
'-------
Sub PlageACopier()
Dim x1 As Integer
Dim x2
Dim x
Dim y 'As Integer
Dim n 'As Integer erreur ???
Dim AdrPlageImport
Dim t
Dim s
t = "N° cde"
s = "NBC"
y =
Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
Stop
On Error GoTo r1
x1 = Range("Col_Import").Find(t, Range("Col_Import").Item(1),
xlFormulas, xlWhole, xlByRows, xlNext, False, False).Row + 1
GoTo r2
r1:
x1 = 0
r2:
On Error GoTo r3
x2 = Range("Col_Import").Find(s, Range("Col_Import").Item(1),
xlFormulas, xlWhole, xlByRows, xlNext, False, False).Row + 1
GoTo r4
r3:
x2 = 0
r4:
If x1 > 0 Then
x = Range("Import").Find(t, Range("Import").Item(1),
xlFormulas, xlWhole, xlByRows, xlNext, False, False).Row + 1
Else
x = Range("Import").Find(s, Range("Import").Item(1),
xlFormulas, xlWhole, xlByRows, xlNext, False, False).Row + 1
End If
AdrPlageImport = Range(Cells(x, 1), Cells(y, 7)).Address '[g4]
= Range(Cells(x, 1), Cells(y, 7)).Address
Range(AdrPlageImport).Copy
End sub
'-------bonjour Jp,
si t n'est pas trouvé cela provoque un erreur, as tu mis une gestion
d'erreur dans ton code ?
isabelle
j-pascal a écrit :Bonjour,
Dans le code qui suit, je ne comprends pas pourquoi, je ne peux pas
récupérer les 2 valeurs liées à "x1" et "x2".
Si, j'effectue la procédure en mode pas à pas, si "t" (N° Cde) n'existe pas
dans ma plage "Col_Import", "x2" ne se calcule pas et la procédure se
termine.
Je pensais qu'indépendemment du résultat de x1, je pouvais voir le résultat
pour x2 en survolant la variable avec la souris !
'------------------
t = "N° cde"
s = "NBC"
y = Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
x1 = Range("Import").Find(t, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
x2 = Range("Import").Find(s, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
'------------------
Je crains que cette question soit stupide, mais je n'arrive pas à voir ce
qui cloche !
Merci pour vos lumières,
JP
Bonjour,
Je n'ai pas tout compris dans ton code car il y a des variables qui sont
initialisées et pas utilisées ? Prend l'habitude de typer tes variables,
moins de mémoire utilisée et code plus rapide.
Teste si cela te convient et adapte :
Sub PlageACopier()
Dim Plage As Range
Dim PlageImport As Range
Dim Cel_1 As Range
Dim x As Integer 'Long si au delà de 32767
Dim y As Integer
Dim t As String
Dim s As String
t = "N° cde"
s = "NBC"
'défini la plage
Set Plage = [Col_Import]
'récupère le N° de la dernière ligne
'de la plage
With Plage
y = .Cells(1, 1).Row + .Rows.Count - 1
End With
'recherche la valeur de "t" dans la plage
Set Cel_1 = Plage.Find(t, , xlFormulas, xlWhole)
'si trouvé
If Not Cel_1 Is Nothing Then
x = Cel_1.Row + 1
Else
'sinon, recherche la valeur de "s" dans la plage
Set Cel_1 = Plage.Find(s, , xlFormulas, xlWhole)
'si trouvé
If Not Cel_1 Is Nothing Then
x = Cel_1.Row + 1
'sinon, message et sortie de procédure
Else
MsgBox "Valeur pas trouvée :o(("
Exit Sub
End If
End If
'défini la plage à copier
Set PlageImport = Range(Cells(x, 1), Cells(y, 7))
'et copie dans la feuille 2 à partir de A1
'à adapter
PlageImport.Copy Worksheets("Feuil2").[A1]
Set Plage = Nothing
Set Cel_1 = Nothing
Set PlageImport = Nothing
Hervé.
End Sub
"j-pascal" a écrit dans le message de
news:Bonjour,
Dans le code qui suit, je ne comprends pas pourquoi, je ne peux pas
récupérer les 2 valeurs liées à "x1" et "x2".
Si, j'effectue la procédure en mode pas à pas, si "t" (N° Cde) n'existe pas
dans ma plage "Col_Import", "x2" ne se calcule pas et la procédure se
termine.
Je pensais qu'indépendemment du résultat de x1, je pouvais voir le résultat
pour x2 en survolant la variable avec la souris !
'------------------
t = "N° cde"
s = "NBC"
y = Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
x1 = Range("Import").Find(t, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
x2 = Range("Import").Find(s, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
'------------------
Je crains que cette question soit stupide, mais je n'arrive pas à voir ce
qui cloche !
Merci pour vos lumières,
JP
Bonjour,
Je n'ai pas tout compris dans ton code car il y a des variables qui sont
initialisées et pas utilisées ? Prend l'habitude de typer tes variables,
moins de mémoire utilisée et code plus rapide.
Teste si cela te convient et adapte :
Sub PlageACopier()
Dim Plage As Range
Dim PlageImport As Range
Dim Cel_1 As Range
Dim x As Integer 'Long si au delà de 32767
Dim y As Integer
Dim t As String
Dim s As String
t = "N° cde"
s = "NBC"
'défini la plage
Set Plage = [Col_Import]
'récupère le N° de la dernière ligne
'de la plage
With Plage
y = .Cells(1, 1).Row + .Rows.Count - 1
End With
'recherche la valeur de "t" dans la plage
Set Cel_1 = Plage.Find(t, , xlFormulas, xlWhole)
'si trouvé
If Not Cel_1 Is Nothing Then
x = Cel_1.Row + 1
Else
'sinon, recherche la valeur de "s" dans la plage
Set Cel_1 = Plage.Find(s, , xlFormulas, xlWhole)
'si trouvé
If Not Cel_1 Is Nothing Then
x = Cel_1.Row + 1
'sinon, message et sortie de procédure
Else
MsgBox "Valeur pas trouvée :o(("
Exit Sub
End If
End If
'défini la plage à copier
Set PlageImport = Range(Cells(x, 1), Cells(y, 7))
'et copie dans la feuille 2 à partir de A1
'à adapter
PlageImport.Copy Worksheets("Feuil2").[A1]
Set Plage = Nothing
Set Cel_1 = Nothing
Set PlageImport = Nothing
Hervé.
End Sub
"j-pascal" <messages@venir.com> a écrit dans le message de
news:mn.cbdd7d9439573d47.81386@venir.com...
Bonjour,
Dans le code qui suit, je ne comprends pas pourquoi, je ne peux pas
récupérer les 2 valeurs liées à "x1" et "x2".
Si, j'effectue la procédure en mode pas à pas, si "t" (N° Cde) n'existe pas
dans ma plage "Col_Import", "x2" ne se calcule pas et la procédure se
termine.
Je pensais qu'indépendemment du résultat de x1, je pouvais voir le résultat
pour x2 en survolant la variable avec la souris !
'------------------
t = "N° cde"
s = "NBC"
y = Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
x1 = Range("Import").Find(t, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
x2 = Range("Import").Find(s, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
'------------------
Je crains que cette question soit stupide, mais je n'arrive pas à voir ce
qui cloche !
Merci pour vos lumières,
JP
Bonjour,
Je n'ai pas tout compris dans ton code car il y a des variables qui sont
initialisées et pas utilisées ? Prend l'habitude de typer tes variables,
moins de mémoire utilisée et code plus rapide.
Teste si cela te convient et adapte :
Sub PlageACopier()
Dim Plage As Range
Dim PlageImport As Range
Dim Cel_1 As Range
Dim x As Integer 'Long si au delà de 32767
Dim y As Integer
Dim t As String
Dim s As String
t = "N° cde"
s = "NBC"
'défini la plage
Set Plage = [Col_Import]
'récupère le N° de la dernière ligne
'de la plage
With Plage
y = .Cells(1, 1).Row + .Rows.Count - 1
End With
'recherche la valeur de "t" dans la plage
Set Cel_1 = Plage.Find(t, , xlFormulas, xlWhole)
'si trouvé
If Not Cel_1 Is Nothing Then
x = Cel_1.Row + 1
Else
'sinon, recherche la valeur de "s" dans la plage
Set Cel_1 = Plage.Find(s, , xlFormulas, xlWhole)
'si trouvé
If Not Cel_1 Is Nothing Then
x = Cel_1.Row + 1
'sinon, message et sortie de procédure
Else
MsgBox "Valeur pas trouvée :o(("
Exit Sub
End If
End If
'défini la plage à copier
Set PlageImport = Range(Cells(x, 1), Cells(y, 7))
'et copie dans la feuille 2 à partir de A1
'à adapter
PlageImport.Copy Worksheets("Feuil2").[A1]
Set Plage = Nothing
Set Cel_1 = Nothing
Set PlageImport = Nothing
Hervé.
End Sub
"j-pascal" a écrit dans le message de
news:Bonjour,
Dans le code qui suit, je ne comprends pas pourquoi, je ne peux pas
récupérer les 2 valeurs liées à "x1" et "x2".
Si, j'effectue la procédure en mode pas à pas, si "t" (N° Cde) n'existe pas
dans ma plage "Col_Import", "x2" ne se calcule pas et la procédure se
termine.
Je pensais qu'indépendemment du résultat de x1, je pouvais voir le résultat
pour x2 en survolant la variable avec la souris !
'------------------
t = "N° cde"
s = "NBC"
y = Range("Col_Import").Item(Range("Col_Import").Count).End(xlUp).Row
x1 = Range("Import").Find(t, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
x2 = Range("Import").Find(s, Range("Import").Item(1), xlFormulas,
xlWhole, xlByRows, xlNext, False, False).Row + 1
'------------------
Je crains que cette question soit stupide, mais je n'arrive pas à voir ce
qui cloche !
Merci pour vos lumières,
JP