Résolu Récupérer des données en fonction du nom de la feuille excel

  • Auteur de la discussion franck1804
  • Date de début

franck1804

Nouveau membre
Bonjour,

Pour des besoins pro, je souhaiterai mettre en place une macro pour récupérer un bon nombre de résultats.

Je dispose d'un classeur excel avec plusieurs feuilles nommées ainsi :
BilanGlobal
Bilan20
Bilan120
20_z_1
20_z_2
20_z_...
120_z_1
120_z_2
120_z_...

Je voudrais récupérer des valeurs dans les feuilles 20_z_... et 120_z_... et les copier dans la feuille Bilan20 pour les feuilles 20_z_... et Bilan120 pour les feuilles 120_z_..., sachant que je ne connais pas le nombre de feuilles.

J'espère avoir été clair et que quelqu'un pourra m'aider.

Merci par avance

Franck
 

franck1804

Nouveau membre
Meilleure réponse
A force de chercher et d'essayer de nouveau code j'ai enfin trouvé la solution par moi même.

Je la diffuse au cas ou quelqu'un serait intéressé.

Sub essai2()
Dim v As Integer
For i = 4 To Sheets.Count
If InStr(Sheets(i).Name, "OCS20") <> 0 Then
Sheets("BILAN OCS20").Select
v = 1
While (Cells(v, 1).Value <> "")
v = v + 1
Wend
Cells(v, 1).Value = Sheets(i).Name
Sheets("BILAN OCS20").Cells(v, 2).Value = Sheets(i).Range("B17").Value
Sheets("BILAN OCS20").Cells(v, 3).Value = Sheets(i).Range("B18").Value
Sheets("BILAN OCS20").Cells(v, 4).Value = Sheets(i).Range("B19").Value
Sheets("BILAN OCS20").Cells(v, 5).Value = Sheets(i).Range("B20").Value
Sheets("BILAN OCS20").Cells(v, 6).Value = Sheets(i).Range("B21").Value
Sheets("BILAN OCS20").Cells(v, 7).Value = Sheets(i).Range("B22").Value
Sheets("BILAN OCS20").Cells(v, 8).Value = Sheets(i).Range("B23").Value
Sheets("BILAN OCS20").Cells(v, 9).Value = Sheets(i).Range("B24").Value
Sheets("BILAN OCS20").Cells(v, 10).Value = Sheets(i).Range("B25").Value
Sheets("BILAN OCS20").Cells(v, 11).Value = Sheets(i).Range("B26").Value
Sheets("BILAN OCS20").Cells(v, 12).Value = Sheets(i).Range("B29").Value
Sheets("BILAN OCS20").Cells(v, 13).Value = Sheets(i).Range("B30").Value
Sheets("BILAN OCS20").Cells(v, 14).Value = Sheets(i).Range("B31").Value
Sheets("BILAN OCS20").Cells(v, 15).Value = Sheets(i).Range("C43").Value
Sheets("BILAN OCS20").Cells(v, 16).Value = Sheets(i).Range("D43").Value
Sheets("BILAN OCS20").Cells(v, 17).Value = Sheets(i).Range("E43").Value
Sheets("BILAN OCS20").Cells(v, 18).Value = Mid(Sheets(i).Range("A13").Value, 35)
End If
If InStr(Sheets(i).Name, "OCS120") <> 0 Then
Sheets("BILAN OCS120").Select
v = 1
While (Cells(v, 1).Value <> "")
v = v + 1
Wend
Cells(v, 1).Value = Sheets(i).Name
Sheets("BILAN OCS120").Cells(v, 2).Value = Sheets(i).Range("B17").Value
Sheets("BILAN OCS120").Cells(v, 3).Value = Sheets(i).Range("B18").Value
Sheets("BILAN OCS120").Cells(v, 4).Value = Sheets(i).Range("B19").Value
Sheets("BILAN OCS120").Cells(v, 5).Value = Sheets(i).Range("B20").Value
Sheets("BILAN OCS120").Cells(v, 6).Value = Sheets(i).Range("B21").Value
Sheets("BILAN OCS120").Cells(v, 7).Value = Sheets(i).Range("B22").Value
Sheets("BILAN OCS120").Cells(v, 8).Value = Sheets(i).Range("B23").Value
Sheets("BILAN OCS120").Cells(v, 9).Value = Sheets(i).Range("B24").Value
Sheets("BILAN OCS120").Cells(v, 10).Value = Sheets(i).Range("B25").Value
Sheets("BILAN OCS120").Cells(v, 11).Value = Sheets(i).Range("B26").Value
Sheets("BILAN OCS120").Cells(v, 12).Value = Sheets(i).Range("B27").Value
Sheets("BILAN OCS120").Cells(v, 13).Value = Sheets(i).Range("B28").Value
Sheets("BILAN OCS120").Cells(v, 14).Value = Sheets(i).Range("B31").Value
Sheets("BILAN OCS120").Cells(v, 15).Value = Sheets(i).Range("B32").Value
Sheets("BILAN OCS120").Cells(v, 16).Value = Sheets(i).Range("B33").Value
Sheets("BILAN OCS120").Cells(v, 17).Value = Sheets(i).Range("C47").Value
Sheets("BILAN OCS120").Cells(v, 18).Value = Sheets(i).Range("D47").Value
Sheets("BILAN OCS120").Cells(v, 19).Value = Sheets(i).Range("E47").Value
Sheets("BILAN OCS120").Cells(v, 20).Value = Mid(Sheets(i).Range("A13").Value, 35)
End If
Next i
End Sub
 

zeb

Modérateur
Ouhlala, c'est pas beau.
(Même si je t'ai validé comme Meilleure Réponse ;) )

Si tu écris plus de deux fois la même ligne, c'est que tu aurais pu mettre une boucle !

Regarde :

Code:
Sub essai3()
	Dim v As Integer
	Dim j As Long
	Dim m As Integer
	Dim n As Integer
	
	Dim ws       As Worksheet
	Dim ws_bilan As Worksheet
	Set ws_bilan = Worksheets("BILAN OCS20")
	
	For Each ws In Worksheets
	
		Select Case True
			Case ws.Name Like "*OCS20*"  : m = 0 : n = 0
			Case ws.Name Like "*OCS120*" : m = 2 : n = 4
			Case ws.Index > 4            : m = -1
			Case Else                    : m = -1
		End Select
	
		If m >= 0 Then			
			v = 1
			Do While Cells(v, 1).Value <> ""
				v = v + 1
			Loop
			
			ws_bilan.Cells(v,  1).Value = Worksheets(i).Name
			ws_bilan.Cells(v, 18+m).Value = Mid(Worksheets(i).Range("A13").Value, 35)

			For j = 0 To 9 + m
				ws_bilan.Cells(v, j + 2).Value = Worksheets(i).Cells(j + 17, 2).Value
			Next

			For j = 0 To 2
				ws_bilan.Cells(v, j+12).Value = Worksheets(i).Cells(j + 29 + m, 2).Value
			Next

			For j = 0 To 2
				ws_bilan.Cells(v, j+15).Value = Worksheets(i).Cells(43 + n, j+3).Value
			Next
		End If
	Next
End Sub
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 049
Membres
1 586 282
Dernier membre
Yannick3553
Partager cette page
Haut