Vba problème de variable dans un range

Résolu/Fermé
Toshiii Messages postés 10 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 10 septembre 2012 - Modifié par Toshiii le 20/07/2011 à 17:01
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 21 juil. 2011 à 12:19
Bonjour,

Ca fait qques heure s que je penche sur un problème que vous pourrez je pense -j'espère- résoudre.

Voilà, j'ai un tableau de plusieurs colonnes. Je fais une recherche dans la deuxième colonne pour trouver une valeur et je sélectionne la ligne.
Mon but est de ensuite copier cette ligne là et une autre (tjr la même) dans un nouveau classseur.
Mon programme marche si je mets les 2 lignes à copier sous forme de chiffre dans mon range mais ne marche plus quand je mets une variable à la place.
Voici mon code pour être plus claire :

Dim var As Integer
var = 0
'Rechercher la ligne correspondant au nom d'une salle dans une feuille
Workbooks("Equipements cfo.xls").Worksheets("S2_cfo").Activate
For i = 458 To 8 Step -1
Cells(i, 2).Select
If Selection.Text = "S2.H.50" Then
Rows(i).Select
var = i
Exit For
End If
Next i



'Extraction des lignes dans un nouveau classeur
Range("2:2,var:var").Select
Selection.Copy
Workbooks("macro.xls").Activate
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True

c'est peut-être un problème de mise en page mais je ne trouve pas :s

Merci d'avance :)

3 réponses

bonjour,

Range("2:2,var:var").Select 
la zone entre " " n'est pas interprétée et est utilisée telle quelle.
il faudrait passer par un "truc" de ce style:
Plage = "2:2," & var & ":" & var
Range(Plage).Select

de plus, plutôt que de donner à var la valeur de i, pour utiliser cette valeur, utilise directement i
Plage = "2:2," & i & ":" & i
Range(Plage).Select

par ailleurs, var est le nom d'une fonction; donc ne pas utiliser ce mot.
Bonne suite
2
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 312
Modifié par michel_m le 20/07/2011 à 20:37
bonjour

sans boucle
With Workbooks("Equipements cfo.xls").Worksheets("S2_cfo") 
      lig = .Columns("B").Find("S2.H.50", .Range("B457"), xlValues).Row 
      plage = "2:2," & lig & ":" & lig
     .Range(plage).Select
End With

Michel
0
Toshiii Messages postés 10 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 10 septembre 2012
21 juil. 2011 à 09:49
En fait, j'essaie d'imbriquer ton bout de code dans une nouvelle boucle For pour rechercher le nom d'une salle dans mes différents feuillets, mais je n'y arrive pas.
C'est posible de faire ca ?
0
Toshiii Messages postés 10 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 10 septembre 2012
21 juil. 2011 à 08:08
Ca marche parfaitement avec le i !
Merci beaucoup Paf

Je n'ai pas essayé sans boucle pcq tout le reste de mon programme a des boucles :)

Sinon, est ce que il est possible de faire la même recherche mais sur plusieurs feuillets d'un même classeur (S2_cfo, S1_cfo, N0_cfo...)?
0
Toshiii Messages postés 10 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 10 septembre 2012
Modifié par Toshiii le 21/07/2011 à 09:51
En fait j'ai trouvé la solution !
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 312
21 juil. 2011 à 12:19
BRAVO
0