Procédure appelant les macros "Recherche", "Répéter" et "copier/coller"

Bonsoir le forum,

Je progresse en Vba, mais pour ce qui est de la logique dans les boucles pour rechercher des feuilles bien précise, je suis perdu.

J’ai réussi à faire en sorte que ma macro copie les valeurs de chaque feuilles « Poule 3j (2), Poule 4j (2), etc…, dans ma feuille « CTF » ligne après ligne. Où je coince, c’est de créer le code pour la recherche des feuilles « Poule 3j (2), Poule 4j (2), etc…, car je n’aurai pas forcément une poule de chaque, mais peut-être 2 feuilles de « Poule 3j (2) » ou 5 feuilles de « Poule 4j (2) » etc., voir mon début de code sur la feuille « CTF ».

Voici les problèmes à résoudre :

  1. Faire une recherche des feuilles qui commencent par « Poule » ou « Groupe » ou « Gr », et que la valeur (2) change aussi...explication; Poule 3j (2), Poule 3j (3), etc., la valeur entre parenthèse est le nombre de feuille identique.
  2. Adapter le code en fonction des noms des feuilles qu’on renommera soit « Poule », « Groupe » ou « Gr ».

J’ai déjà écrit le code pour copier/coller de toutes les Poules (de 3j à 10j), merci à celui qui voudra passer un peu de son temps pour m’aider, à adapter ma macro. Pour créer une autre poule, aller sur la feuille « Infos générales ».

Bonjour

Faire une recherche des feuilles qui commencent par « Poule » ou « Groupe » ou « Gr », et que la valeur (2) change aussi...explication; Poule 3j (2), Poule 3j (3), etc., la valeur entre parenthèse est le nombre de feuille identique.

Pourquoi appliquer plusieurs noms pour ce que tu veux faire dans le sport on dit Poule

et pourquoi poule 3j que veut dire le j?

Le code pourra être adapté que si toutes tes feuilles commence par le même nom exemple poule 1, poule 2 ...

Quand on fait le tour des codes que tu as mis ,on se trouve à l'intérieur d'une véritable usine à gaz

Bonjour le forum et Joco7915,

Merci pour ton commentaire et j’ai rectifié la nomination de mes feuilles selon ton commentaire.

La feuille Poule 3, est la feuille d’origine que je ne peux pas supprimer, car mon code copie cette feuille et comme vous le savez tous, on ne peut pas avoir deux fois la même feuille avec le même nom, donc j’aurai « Poule 3 (2) ».

Poule de 4 joueurs à Poule 4 (2)

Poule de 5 joueurs à Poule 5 (2)

Ect..

« Pourquoi appliquer plusieurs noms pour ce que tu veux faire dans le sport on dit Poule »

Pour la réponse… une autre personne préfèrera nommer ces feuilles par Groupe 1, 2, 3, etc.

Infos sur les Poules et la sélection des données :

Poule 3 (2) : Sélections des numéros des joueurs BC32:BC59 (identique pour toutes les poules)

Sélections des scores L15;T17

Poule 4 (2) : Sélections des scores O15;W18

Poule 5 (2) : Sélections des scores R15;Z19

Poule 6 (2) : Sélections des scores U15;AC20

Poule 7 (2) : Sélections des scores X15;AF21

Poule 8 (2) : Sélections des scores AA15;AI22

Poule 9 (2) : Sélections des scores AD15;AL23

Poule 10 (2) : Sélections des scores AG15;AO24

Dans le fichier joint, un exemple avec 29 joueurs, réparties sur 5 poules (de 5 joueurs) et une poule (de 4 joueurs). Mon code actuel fonctionne uniquement si j’ai des feuilles de « Poules de 3 (2) à 10 (2) » dans l’ordre. Mais si j’ai une autre combinaison de feuilles « Poule 5 (2), Poule 5 (3), Poule 5 (4), Poule 4 (2) », mon code ne fonctionne pas !

D’où ma demande, et c’est là que moi je coince, le code doit rechercher les feuilles, si elles existent, d’exécuter le code de copier/coller vers la feuille « CTF » à la suite, en A11 (numéros des joueurs) et en E11;M11 (les scores).

Merci d’avance pour votre temps.

J’ai oublié de préciser, que les feuilles seront renommées comme suite :

Poule 5 (2) à Poule 1

Poule 5 (3) à Poule 2

Poule 5 (4) à Poule 3

Poule 5 (5) à Poule 4

Poule 4 (2) à Poule 5

Etc..

Bonjour le forum,

Après plusieurs recherche sur le net et en bricolant, j'ai réussit à résoudre mon problème de ma macro "Rechercher, Répéter et copier/coller" de mon programme tournoi de tennis de table. Pour ceux que ça intéresse, voir code si dessous :

Sub Inserer_click()
Application.ScreenUpdating = False
Sheets("CTF").Visible = True
Dim wsSource As Worksheet, wsDest As Worksheet, ws As Worksheet
Dim rngSource As Range, rngDest As Range
Dim LastRow As Long
Dim wb As Workbook

Set wb = ThisWorkbook
Set wsDest = ThisWorkbook.Sheets("CTF")
'Effacer les données de la feuille CTF
wsDest.Range("A3:A258,E3:E258,G3:H258,J3:K258,M3:M258").ClearContents
LastRow = wsDest.Range("A" & Rows.Count).End(xlUp).Row + 2 ' copiera les données à la 3èmes lignes

For Each ws In wb.Sheets
If Left(ws.Name, 2) = "Gr" Then 'le 2, correspond aux nombres de caratères du nom de la feuille (poule = 5)
' Copy values from column Groupe
Set wsSource = ws
Set rngSource = wsSource.Range("BC32:BC59")

    For i = 1 To rngSource.Rows.Count
        If Not IsEmpty(rngSource.Cells(i, 1)) Then
            wsDest.Range("A" & LastRow).Value = rngSource.Cells(i, 1).Value
            LastRow = LastRow + 1
        End If
    Next i
End If

Next ws

'CopyDataFromGrSheets_Click()
Dim lstRow As Long
Dim grSheet As String

' Feuille de destination
For i = 1 To 6
    grSheet = "Gr" & i & "-3"

    ' Vérifier si la feuille existe
    If Not SheetExists(grSheet) Then
         grSheet = "Gr" & i & "-4"
         If Not SheetExists(grSheet) Then
              grSheet = "Gr" & i & "-5"
             If Not SheetExists(grSheet) Then
                  grSheet = "Gr" & i & "-6"
                 If Not SheetExists(grSheet) Then
                      grSheet = "Gr" & i & "-7"
                     If Not SheetExists(grSheet) Then
                          grSheet = "Gr" & i & "-8"
                          If Not SheetExists(grSheet) Then
                               grSheet = "Gr" & i & "-9"
                               If Not SheetExists(grSheet) Then
                                    grSheet = "Gr" & i & "-10"
                                    If Not SheetExists(grSheet) Then
                                    Exit For
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If

    ' Trouver la dernière ligne utilisée dans la feuille de destination
    lstRow = wsDest.Range("E" & wsDest.Rows.Count).End(xlUp).Row

    ' Copier les données de la feuille Gr-3, Gr-4, Gr-5, Gr-6, Gr-7, Gr-8, Gr-9 ou Gr-10 en fonction de la feuille qui existe
    If grSheet = "Gr" & i & "-3" Then
        ThisWorkbook.Sheets(grSheet).Range("L15: T17").Copy
    ElseIf grSheet = "Gr" & i & "-4" Then
        ThisWorkbook.Sheets(grSheet).Range("O15:W18").Copy
    ElseIf grSheet = "Gr" & i & "-5" Then
        ThisWorkbook.Sheets(grSheet).Range("R15:Z19").Copy
    ElseIf grSheet = "Gr" & i & "-6" Then
        ThisWorkbook.Sheets(grSheet).Range("U15:AC20").Copy
    ElseIf grSheet = "Gr" & i & "-7" Then
        ThisWorkbook.Sheets(grSheet).Range("X15:AF21").Copy
    ElseIf grSheet = "Gr" & i & "-8" Then
        ThisWorkbook.Sheets(grSheet).Range("AA15:AI22").Copy
    ElseIf grSheet = "Gr" & i & "-9" Then
        ThisWorkbook.Sheets(grSheet).Range("AD15:AL23").Copy
    ElseIf grSheet = "Gr" & i & "-10" Then
        ThisWorkbook.Sheets(grSheet).Range("AG15:AO24").Copy
    End If
    wsDest.Range("E" & lstRow + 1).PasteSpecial xlPasteValues

        ' Ajout des valeurs 999
        For j = 3 To 258
            If IsEmpty(ThisWorkbook.Sheets("CTF").Range("G" & j).Value) Then
            ThisWorkbook.Sheets("CTF").Range("G" & j).Value = 999
        End If
    Next j
Next i
Sheets("CTF").Activate
Range("A11").Activate
Sheets("CTF").Visible = False
Sheets("Infos générales").Select
Application.ScreenUpdating = True
End Sub

' Fonction pour vérifier si une feuille existe
Function SheetExists(sheetName As String) As Boolean
Dim ws As Worksheet

On Error Resume Next
Set ws = ThisWorkbook.Sheets(sheetName)
On Error GoTo 0

If Not ws Is Nothing Then
    SheetExists = True
Else
    SheetExists = False
End If

End Function

C'est un peu long, mais je n'ai pas trouvé plus cours , du moment que ça fonctionne !

Rechercher des sujets similaires à "procedure appelant macros recherche repeter copier coller"