VBA : n° de ligne en variable

Bonjour à tous.

Nouveau sur le Forum

Nouveau en VBA.

Existe t-il une solution en VBA pour mettre un N° de ligne en variable

Je vous joints mon fichier VBA

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub copy5()

If Range("ab1").Value = 1 Then

Range("v1:v300").ClearContents

Range("x1:x300").ClearContents

End If

If Range("u1").Value = 40 Then

Sheets("feuil2").Select

Range("p2:p40").Select

Selection.Copy

Sheets("feuil2").Select

Range("v1:v200").Select

Selection.PasteSpecial Paste:=xlPasteValues

Sheets("feuil2").Select

Range("p41:p200").Select

Selection.Copy

Sheets("feuil2").Select

Range("x1:x200").Select

Selection.PasteSpecial Paste:=xlPasteValues

End If

End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Range("p2:p40").Select

Peut on remplacer 40 par une variable du style

p=indirect("u1")

D'avance merci à celui ou celle qui m'apportera une réponse

Peter

Bonsoir,

Une proposition :

Sub copy5()
    Application.ScreenUpdating = False
    '---------------------
    Dim plage As String
    plage = "P2:P40"

    If Range("ab1").Value = 1 Then
        Range("v1:v300", "x1:x300").ClearContents
    End If
    If Range("u1").Value = 40 Then
        '--------------------
        Sheets("feuil2").Range(plage).Copy

        Sheets("feuil2").Range("v1").PasteSpecial Paste:=xlPasteValues
        Sheets("feuil2").Range("p41:p200").Copy
        Sheets("feuil2").Range("x1").PasteSpecial Paste:=xlPasteValues
    End If
    Application.ScreenUpdating = True
End Sub

Bonsoir

Merci pour la réponse, mais j'ai mal formulé ma demande.

j'ai pris l'exemple avec 40 mais ce chiffre change régulièrement.

Cela peut être 30 36 40 42 44 46 etc...

D'où ma demande de gérer cela avec une variable.

Avez vous une solution

D'avance merci

Re,

Oui, j'ai vu ça, mais le match commençait... Tu peux utiliser la concaténation avec & et regarder pour simplifier le code :

Sub copy5()
    Application.ScreenUpdating = False
    '---------------------
    Dim num As Integer
    num = 40

    If Range("ab1").Value = 1 Then
        Range("v1:v300", "x1:x300").ClearContents
    End If
    If Range("u1").Value = 40 Then
        '--------------------
        Worksheets("feuil2").Range("P2:P" & num).Copy

        Sheets("feuil2").Range("v1").PasteSpecial Paste:=xlPasteValues
        Sheets("feuil2").Range("p41:p200").Copy
        Sheets("feuil2").Range("x1").PasteSpecial Paste:=xlPasteValues
    End If
    Application.ScreenUpdating = True
End Sub

j'ai testé ta réponse

le code fonctionne très bien

mais je ne maitrise pas les fonctions de concaténation en VBA

Alors si tu as du temps et de la patience

Donne moi le code complet.

merci pour tout

Bonjour,

L'opérateur de concaténation en VBA est l'éperluette (&), c'est tout, ça te permet d'associer du texte en dur à du texte stocké sous forme de variable. Le texte en dur doit être entouré de guillemets. Si tu veux obtenir la chaîne 0 + 0 = la tête à toto avec les zéros en variable :

chaine=zero1 & " + " & zero2 & " = la tête à toto"

Il faut penser à placer des espaces au bons endroits entre les guillemets.

Bonsoir,

Super pour la rapidité des réponses.

Mais je pense que je suis sur le point d'abdiquer.

Je me rends compte que mes connaissances en VBA sont insuffisantes

et je ne suis pas capable de mettre en place ce que tu proposes.

Tu m'as proposé une application qui fonctionne, pour répondre à ce que je recherche il faudrait que num =40

devienne une variable avec une valeur comprise entre 20 et 60,

et la je ne vois pas comment la concaténation peut me permettre de gérer cette valeur.

Je vais rester probablement sur ce que je sais faire en prenant l'application que tu m'as proposé et je vais la dupliquer 40 fois

en changeant les valeurs num et value.

Cordialement

Bonjour

Finalement j'ai trouvé une solution simple

avec num=Range("u2").value

Encore merci pour ton aide

Sub copy5()
    Application.ScreenUpdating = False
    '---------------------
   Dim num As Integer
    num = Range("u2").Value

    If Range("ab1").Value = 1 Then
        Range("v1:v300").ClearContents
    End If
    If Range("u2").Value > 1 Then
        '--------------------
       Worksheets("feuil2").Range("P2:P" & num).Copy
        Sheets("feuil2").Range("v1").PasteSpecial Paste:=xlPasteValues
      End If

    Application.ScreenUpdating = True
End Sub
Rechercher des sujets similaires à "vba ligne variable"