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

une macro pour plusieurs feuilles

  • Initiateur de la discussion Initiateur de la discussion archi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

archi

XLDnaute Impliqué
Bjr le forum,
j'ai un code dont la première ligne est:

Code:
Public Const WSBase As String = "Feuille3 de Eq1"

ce code va chercher les infos sur la "feuille3 de Eq1"....et je l'active a partir d'un bouton qui ce trouve en feuil "Eq1".
cependant, ayant d'autre feuil intitulé "Eq2", "Eq3", "Eq4", je voudrais que cette macro utilise les infos sur la "feuille3 de Eq2", "feuille3 de Eq3", etc...d'où ma question:
comment transformer la ligne de code ci-dessus de facon a créer une macro générique de type:
Code:
Public Const WSBase As String = "Feuille3 de Eq+[Color=Red]numéro de l'onglet de la feuille active"[/Color]

merci d'avance
bye
 
Re : une macro pour plusieurs feuilles

Bjr tatiak et merci
cependant je ne vois pas comment l'insérer dans le code ci-dessous (moi novice)
Code:
Option Explicit
  
Public Const WSBase As String = "Feuille3 de Eq1"
Sub Equipe3_A()

Dim Rangebase As String, RangeCopy As String, RowCopy As Integer, Nom As String
Dim nbjoueurs As Byte, nbrencontres As Byte, offsetjoueur As Byte, i As Byte, j As Byte
Application.ScreenUpdating = False

nbjoueurs = 3       'nombre de joueurs
nbrencontres = 3    'nombre de rencontres par joueur
offsetjoueur = 7    'différence de lignes entre 2 joueurs

For i = 1 To nbjoueurs
     
    Rangebase = "c" & (2 + offsetjoueur * (i - 1)) 'C2 puis C9...
    'vérification présence nom de joueur
    If Not InStr(1, Sheets(WSBase).Range(Rangebase).Value, " ") < 1 Then
         With Sheets(WSBase).Range(Rangebase)
        Nom = Application.WorksheetFunction.Proper(Left(.Value, InStr(1, .Value, " ") + 1) + ".")
        End With
        For j = 1 To nbrencontres
            'test validité ligne par ligne d'où RangeCount =  1 ligne à la fois, fixe
            If Not Range("I" & (4 + offsetjoueur * (i - 1) + j)).Value = "" Then
                RangeCopy = "B" & (4 + offsetjoueur * (i - 1) + j) & _
                            ":I" & (4 + offsetjoueur * (i - 1) + j)
                Equipe Rangebase, RangeCopy, Nom
            End If
        Next
    End If
Next i
Sheets("Eq3").Activate
Application.ScreenUpdating = True
End Sub

help me
bye
 
Re : une macro pour plusieurs feuilles

Salut à tous

Code:
Dim WS() As String ' ou direct : Dim WS(1 to 10) as String, sans redim
Dim x As Integer

ReDim WS(1 to WorkSheets.Count) ' à supprimer si nombre fixe-voir ci-dessus
For x = 1 To 10
    Set WS(x) = "Feuille3 de Eq" &  x
Next
Et après tu jongles avec tes variables
A+
 
Dernière édition:
Re : une macro pour plusieurs feuilles

Merci pour le code, cependant j'ai oublié de préciser que cette macro été lié avec une autre dont voici le code:

Code:
Sub Equipe(Rangebase As String, RangeCopy As String, Nom As String)
Dim Lig1 As Integer, Lig2 As Integer
Dim i As Integer
  
Application.ScreenUpdating = False
   Sheets(WSBase).Range(RangeCopy).Copy
    
   With Sheets(Nom)

        'copie mise en forme et valeur
        .Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteFormats
        .Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
        Lig1 = .Range("A65536").End(xlUp).Row
        Lig2 = .Range("J65536").End(xlUp).Row + 1
        .Range("A4:H" & Lig1).Validation.Delete
        Range(.Range("A4"), .Range("H" & Lig1)).Sort Key1:=.Range("A4"), Order1:=xlAscending
        If Lig1 > Lig2 - 1 Then
            Range(.Range("J" & Lig2 - 1), .Range("M" & Lig2 - 1)).AutoFill _
            Destination:=Range(.Range("J" & Lig2 - 1), .Range("M" & Lig1)), Type:=xlFillDefault
        End If
   End With
    
   Sheets(WSBase).Activate
  
Application.ScreenUpdating = True
End Sub

malheureusement, je ne sais pas quoi modifier pour que les deux fonctionne correctement ???
 
Re : une macro pour plusieurs feuilles

Bonjour

a tester car non vérifié

la différence entre equip3 et x réside dans le décalage de ligne (delta de 21 lignes)

d'après fichier tatiak

appel par bouton transfère le numéro d'équipe et l'offset (bouton du haut 0, bouton du bas 21)

récupération de l'offset par macro equip3 (ajout de variable decal)

ajout de +decal sur lignes rangebase et testvalidité
 

Pièces jointes

Re : une macro pour plusieurs feuilles

Merci Eric, c bon de te retrouver

pour plus de simplicité, peut on faire de cette macro, une macro générique en modifiant le code

Private Sub CommandButton1_Click()
Call Equipe3(1, 0)
End Sub
--------en---------
Private Sub CommandButton1_Click()
Call Equipe3(NuméroEquipe de l'onglet, 0)
End Sub

car si j'insert une autre Equipe X, la macro ne suit pas
bye
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…