Résolu Comment réaliser une macro de concatenation en se servant du nom des feuilles ?

Eldyviah

Nouveau membre
Bonjour à tous,

Voila je cherche un moyen de réaliser un code vba, qui selectionne les plages entières des feuilles que j'aurais sélectionnées au préalable, et qui part la suite ferai une copie sur la feuille recap.

Merci d'avance je sèche réellement
 

drul

Obscur pro du hardware
Staff


Gné ???

Si c'est la macro qui sélectionne, pourquoi tu dois les sélectionné au préalable ?
Comme toujours commence avec l'enregistreur de macro et ensuite j'essaye de t'aider.
 

Eldyviah

Nouveau membre
Excuses moi, je me suis mal exprimer je vais essayer de te fournir les informations relatives à mon problème:

J'aimerai concrètement que la macro se repère en fonction des noms des onglets (j'en ai 5 à utiliser avec des noms différents)
Que la macro sélectionne les plages de ces feuilles que j'aurais choisis par le biais de leurs noms.
Et que la macro colle ces plages dans l'ordre dans une feuille appelée "RECAP".

Du coup pour résumer je veux que les plages de A2 ->L2 jusqu' à la dernière Ligne soit sélectionné, pour les feuilles portant les noms "BONBON","SUCRE","CALORIES","PRIX","DÉPENDANCE" et que les valeurs sélectionnées soit collées dans la feuille appelée "RECAP".


Voila j'espère avoir été assez clair merci d'avance

 

drul

Obscur pro du hardware
Staff
Bien mieux expliqué cette fois ;)
Alors go enregistreur de macro, regarde le code (horrible) qu'il t'a pondu et essaie de l'adapter à tes besoins, ensuite tu reviens ici, pour validation/amélioration/débug.
 

Eldyviah

Nouveau membre
Pour l'instant j'ai ce code la et je travaille dessus pour l'adapter à ma situation,

Sub ConcatenationFeuilles()
Dim w As Worksheet 'feuille
Dim r As Range 'plage à copier
Dim c As Range 'cellule de destination
Dim n As String 'nom des feuilles à copier



Set c = Feuil10.Range("A:L")
n = "/BONBON/SUCRE/CALORIES/PRIX/DEPENDANCE/"
For Each w In Worksheets
With w
If InStr(1, n, "/" & w.Name & "/") > 0 Then
With .Range(.Cells(.Rows.Count, "A").End(xlUp), "L2")
.Copy c
Set c = c.Offset(.Rows.Count)

End With
End If
End With
Next w
End Sub

Je pourrais pas te répondre tout de suite, je dois partir mais je fais au plus vite, merci d'avance.
 

drul

Obscur pro du hardware
Staff
C'est un très bon départ, c'est quoi le problème avec ce code ?
 

Eldyviah

Nouveau membre
Bonjour Drul,


Le soucis n'est pas avec ce code mais avec ce que j'aimerai lui faire faire, concrètement il y a seulement les valeurs de BONBON qui sont collés dans la feuil10 alors que moi j'aimerai les avoir toutes.
En second lieu j'ai un bug avec Set c = c.Offset(.Rows.Count)

Merci d'avance
 

drul

Obscur pro du hardware
Staff
Ok, effectivement je comprends que ça plante ... Les données de la sheet suivante tu veux les mettre ou ? à la suite dans les colonnes A:L ou dans les colonnes suivante ?
 

Eldyviah

Nouveau membre
Re,

A la suite dans les colonnes A:L, histoire de rester sur la même plage car les feuilles que je traite ont toute la même typologie.

Merci d'avance

 

drul

Obscur pro du hardware
Staff
Meilleure réponse
Alors, non la ligne ou ça plante est bonne, par contre faut changer celle-ci:

Code:
Set c = Feuil10.Range("A:L")
par:
Code:
Set c = Feuil10.Range("A1")
Et ça devrait marcher (en tous cas ça marche chez moi)
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 063
Membres
1 586 394
Dernier membre
Manoushk
Partager cette page
Haut