Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Modification d'une ligne dans mon code

INFINITY100

XLDnaute Occasionnel
Bonjour à vous tous

Voila je viens vers vous afin de trouver la solution à mon petit problème, car là j'ai ci dessous une macro qui répond totalement à mes besoins sauf un à point qui me cause problème.

En effet je cherche à modifier ce code afin que cette macro fonctionne à chaque fois que le nom de la feuille change c'est à dire comme ceci :
Facture - Facture1 - Facture2 - Facture3 - Facture non payée - Facture en attente ...... etc

Je joins mon code ci-dessous et étant débutant en VBA je ne sais quelle ligne modifier

VB:
Dim sh As Worksheet
Dim sFormula As String
Dim sFormula2 As String
Dim DernierID As Integer
Dim lignevide As Integer

Sub Copier_Coller(CopyRange As String)
    With Worksheets("Facture").Range("A1")
        If .Value Like "*CFA*" Then
            Set sh = Sheets("CFA")
 
        ElseIf .Value Like "*UREA*" Then
            Set sh = Sheets("UREA")
         Else
            Set sh = Sheets("UFI")
         End If
    End With
    DernierID = WorksheetFunction.Max(sh.Range("A:A"))
    lignevide = sh.Range("A" & Rows.Count).End(xlUp).Row + 1
 If lignevide < 2 Then lignevide = 2
    sh.Cells(lignevide, 1) = DernierID + 1
    sh.Range("B" & lignevide).Resize(, Range(CopyRange).Count) = Application.Transpose(Range(CopyRange))
    sFormula = "=SIERREUR(SOMME($J$" & lignevide & ":$K$" & lignevide & ");""Attention ! il y a une erreur !"")"
    sFormula2 = "=SIERREUR(SOMME($m$" & lignevide & "*$n$" & lignevide & ");""Attention ! il y a une erreur !"")"
    sh.Cells(lignevide, "L").FormulaLocal = sFormula
    sh.Cells(lignevide, "o").FormulaLocal = sFormula2
End Sub

Et pour l'appel :

VB:
Sub Validation()
    Copier_Coller "Facture!B2:B14"
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Infinity,
Pourquoi ne pas passer deux paramètres avec NomFeuille et Plage :
VB:
Sub Validation()
    Copier_Coller "Facture", "B2: B14"
End Sub
La macro commencerait alors par :
Code:
Sub Copier_Coller(Feuille As String, CopyRange As String)
et vous remplacez :
Code:
With Worksheets("Facture").Range("A1")
par
With Sheets(Feuille).Range("A1")
ou encore
Code:
Range(CopyRange)
par
Sheets(Feuille).Range(CopyRange)
A essayer.
 

INFINITY100

XLDnaute Occasionnel
Merci infiniment Sylvanu

Après test ça marche à merveille

Merci encore
 

Discussions similaires

Réponses
6
Affichages
390
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…