Aide VBA / Plage variable

Bonjour à tous,

j´ai besoin de votre expertise pour un petit probleme VBA :

Sub Macro1()

Dim cellule As Range

Dim maref As String

Dim col As Integer

Dim lig As Integer

Dim x As Integer

maref = "D1 Z-Dir ±0,1mm 1-100Hz Fvz-850N Fvx1500N"

Set cellule = Worksheets("Sheet1").Cells.Find(maref, LookIn:=xlValues, SearchOrder:=xlByRows, MatchCase:=False)

col = cellule.Column

lig = cellule.Row

x = lig + 6

Range("E118:E" & Range("E118").End(xlDown).Row).Select

End Sub

Ce code fonctionne bien et selectionne la plage de données qui m´interesse, seulement j aimerai remplacer le E118 de mon avant derniere ligne par la variable X ( ce qui donnerai Ex ou colx comme desigantion de cellule)

Pouvez vous m aider

ps : j ai mis x = lig +6 parceque la premiere ligne que je souhaite selectionner est 6 ligne est dessous de la cellule variable que je cherche dans ma ligne Set cellule

merci par avance

Jules

Bonjour Jules, bonjour le forum,

Si maref n'est pas trouvée tu vas droit au plantage !... Si tu n'es pas absoluement sur que la référence existe, rajoute ces quelques lignes :

Set cellule = Worksheets("Sheet1").Cells.Find(maref, LookIn:=xlValues, SearchOrder:=xlByRows, MatchCase:=False)
If cellule is nothing then 
    MsgBox "Référence non trouvée !"
    exit Sub
end if
col = cellule.Column
lig = cellule.Row
x = lig + 6

Sinon pour répondre a ta question :

Range(Cells(x, "E"), Cells(x, "E").End(xlDown)).Select

Super cette partie fonctionne merci beaucoup à toi,

ce qui m´amène à ma question suivante :

j ai essayé de l´incrémenter dans une boucle que j ai fais et qui fonctionnne avec des données fixes mais qui ici ne semble pas marcher.

Sub D1Test()

End Sub

Du coup ma question se porte sur les deux lignes en gras, le premiere est la nouvelle ecriture de la question precedente que j ai testée et qui fonctionne toute seule (selectionne bien la partie que je voulais) mais pas dans cette boucle et la seconde c est la forme qui fonctionne mais que pour les données fixes.

Ps : le but de toute cette boucle est d aller chercher dans un dossier un certain nombre d excel dans lesquels j extrait uniquement les datas que je veux, cette macro fonctionne très bien mais n est pas du tout generic.

Ps2: merci de m´avoir répondu si rapidement

Bonjour,

Salut ThauThème

Deux remarques :

1. Pour la lisibilté de ton code ... les balises ' Code ' sont ... très très utiles ...

Sub D1Test()

Application.ScreenUpdating = False

Dim StrFile As String
Dim Folder As String
Dim i As Integer
Dim cellule As Range
Dim maref As String
Dim col As Integer
Dim lig As Integer
Dim x As Integer

Folder = "C:\Temp\"
    With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = Folder
        .Title = "order selection"
        .ButtonName = "choice..."
        .InitialView = msoFileDialogViewList
          If .Show = -1 Then
            Folder = .SelectedItems(1)
            If Right(Folder, 1) <> "\" Then Folder = Folder & "\"
          Else
              MsgBox "no files selected!"
            Exit Sub
          End If
    End With

i = 4
StrFile = Dir(Folder & "*.xlsx")

    Do While Len(StrFile) > 0

      Workbooks.Open (Folder & StrFile)
      maref = "D1 Z-Dir ±0,3mm 1-30Hz Fvz-850N"
      Set cellule = Workbooks(StrFile).Worksheets(1).Cells.Find(maref, LookIn:=xlValues, SearchOrder:=xlByRows, MatchCase:=False)
          If cellule Is Nothing Then
            MsgBox "Ref not found !"
            Exit Sub
          End If
      col = cellule.Column
      lig = cellule.Row
      x = lig + 6

      Workbooks(StrFile).Worksheets(1).Range("D" & x & ":E" & Range("D" & x).End(xlDown).Row).Copy Destination:=ThisWorkbook.Worksheets(7).Range(i & "9")
      Workbooks(StrFile).Worksheets(1).Columns("W").Rows("10:45").Copy Destination:=ThisWorkbook.Worksheets(7).Columns(i + 1).Rows("9")

      i = i + 2
      Workbooks(StrFile).Close
      StrFile = Dir
    Loop

Application.ScreenUpdating = True

End Sub

2. Tu parles d'incrémentation ... de quelle variable s'agit-il ...?

Enfaite j´ai fini par trouver j ai juste changé le format de la partie de droite :

Workbooks(StrFile).Worksheets(1).Range("D" & x & ":D" & Range("D" & x).End(xlDown).Row).Copy Destination:=ThisWorkbook.Worksheets(1).Cells(9, i)

Workbooks(StrFile).Worksheets(1).Range("W" & x & ":W" & Range("W" & x).End(xlDown).Row).Copy Destination:=ThisWorkbook.Worksheets(1).Cells(9, i + 1)

Merci pour ton aide

Bonne journée

Jules

Salut,

Merci pour l´idée des balises, c est vrai que ce sera beaucoup plus clair.

Sinon pour l´incrémentation je me suis mal exprimer, je voulais juste dire ajouter cette partie dans ma boucle.

Merci à vous en tout cas, réponse super rapide ça fait plaisir

Re, Salut James,

Ouais.... Parce que Range(i & "9"), c'était franchement louche...

Re, Salut James,

Ouais.... Parce que Range(i & "9"), c'était franchement louche...

Re,

' Louche ' ... ce n'est que le prénom ... va falloir tout de même trouver un Nom ...!!!

Rechercher des sujets similaires à "aide vba plage variable"