Copier des cellules dans une autre feuille selon critères
Résolu
Hockhed
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
Hockhed Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Hockhed Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je débute en VBA et je recherche une solution sur Excel qui me dépasse pour le moment malgré mes innombrables recherches sur internet.
Voilà mon problème, j'ai un tableau général sur ma première feuille qui me sert à lister l'ensemble des véhicules dont j'ai la gestion (1 véhicule par ligne) et les autres feuilles représentent la fiche détaillée de chaque véhicule.
J'ai créé un code qui me permet en cliquant sur un bouton de créer une feuille véhicule pour chaque ligne du tableau général et avec comme nom de chaque feuille le modèle et de l'immat correspondant à la "Liste" (colonne "MODEL" + "IMMAT" du tableau général), comme ci-dessous :
Avec comme module :
Maintenant, je souhaiterai remplir automatiquement chaque feuille véhicule par les données des lignes du tableau général correspondant au véhicule de la feuille (exemple : immatriculation, marque, modèle).
Je ne sais pas si je suis très clair donc je vous mets les images de ma feuille tableau général et de ma feuille modèle à partir de laquelle je créée mes feuilles véhicules :


Merci d'avance pour votre aide.
Cordialement.
Je débute en VBA et je recherche une solution sur Excel qui me dépasse pour le moment malgré mes innombrables recherches sur internet.
Voilà mon problème, j'ai un tableau général sur ma première feuille qui me sert à lister l'ensemble des véhicules dont j'ai la gestion (1 véhicule par ligne) et les autres feuilles représentent la fiche détaillée de chaque véhicule.
J'ai créé un code qui me permet en cliquant sur un bouton de créer une feuille véhicule pour chaque ligne du tableau général et avec comme nom de chaque feuille le modèle et de l'immat correspondant à la "Liste" (colonne "MODEL" + "IMMAT" du tableau général), comme ci-dessous :
Sub CommandButton1_Click()
Dim nom, c
Dim strNomFeuille As String
For Each c In Range("Liste")
nom = c.Value
strNomFeuille = nom
If FeuilleInexistante(strNomFeuille) = False Then
' "ne rien faire"
Else
Sheets("Modèle").Cells.Copy
Sheets.Add Count:=1, after:=Worksheets(Worksheets.Count)
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=False
ActiveSheet.Name = nom
MsgBox "Feuille " & nom & " créée!"
End If
Next c
End Sub
Avec comme module :
Public Function FeuilleInexistante(ByVal strNomFeuille As String) As Boolean
'Retourne TRUE si strNomFeuille est le nom d'une feuille qui n'existe pas dans le classeur actif
FeuilleInexistante = IsError(Evaluate("='" & strNomFeuille & "'!A1"))
End Function
Maintenant, je souhaiterai remplir automatiquement chaque feuille véhicule par les données des lignes du tableau général correspondant au véhicule de la feuille (exemple : immatriculation, marque, modèle).
Je ne sais pas si je suis très clair donc je vous mets les images de ma feuille tableau général et de ma feuille modèle à partir de laquelle je créée mes feuilles véhicules :


Merci d'avance pour votre aide.
Cordialement.
A voir également:
- Copier des cellules dans une autre feuille selon critères
- Comment copier une vidéo youtube - Guide
- Excel protéger des cellules dans une feuille - Guide
- Super copier - Télécharger - Gestion de fichiers
- Formule excel pour additionner plusieurs cellules - Guide
- Bruler une feuille de laurier - Guide
2 réponses
Bonjour
Plutôt que des images, peux tu envoyer une partie de ton fichier, au format excel 2003, sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
Cdlmnt
Plutôt que des images, peux tu envoyer une partie de ton fichier, au format excel 2003, sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
Cdlmnt
Bonjour,
Merci de votre aide; mais j'ai trouvé la solution grâce à une âme charitable.
Je mets le code pour ceux que cela pourrait intéresser :
A bientôt
Merci de votre aide; mais j'ai trouvé la solution grâce à une âme charitable.
Je mets le code pour ceux que cela pourrait intéresser :
Option Explicit
Sub CommandButton1_Click()
Dim nom As String, c As Range
Dim strNomFeuille As String
For Each c In Range("NameFeuil")
nom = c.Value
strNomFeuille = nom
If Not FeuilleInexistante(strNomFeuille) = False Then
Sheets("Modèle").Cells.Copy
Sheets.Add Count:=1, after:=Worksheets(Worksheets.Count)
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=False
ActiveSheet.Name = nom
MsgBox "Feuille " & nom & " créée!"
End If
CopyDetail nom, c.EntireRow
Next c
End Sub
Sub CopyDetail(destination As String, donnees As Range)
Dim marque As String
Dim model As String
Dim immat As String
Dim couleur As String
Dim service As String
Dim mise_en_circulation As Variant
Dim prochain_ct As Variant
Dim kms As Variant
Dim energie As String
Dim etat_du_vehicule As String
Dim observation As String
Dim start_ref As String
'il y a deux variante... juste insérer la donnée ou insérer la référence
'on pourra changer le type de donnée pour les champs autre que string(indiqué comme étant Variant dans l'exemple) selon le choix que l'on effectuera.
'juste les données
'marque = donnees.Cells(1, 2)
'model = donnees.Cells(1, 2)
'immat = donnees.Cells(1, 2)
'couleur = donnees.Cells(1, 2)
'service = donnees.Cells(1, 2)
'mise_en_circulation = donnees.Cells(1, 2)
'prochain_ct = donnees.Cells(1, 2)
'kms = donnees.Cells(1, 2)
'energie = donnees.Cells(1, 2)
'etat_du_vehicule = donnees.Cells(1, 2)
''observation = donnees.Cells(1, 2)
'
'With Sheets(destination)
' .Cells(3, 2) = marque
' .Cells(3, 6) = immat
' .Cells(4, 2) = model
' .Cells(4, 6) = mise_en_circulation
' .Cells(5, 2) = energie
' .Cells(5, 6) = kms
' .Cells(8, 3) = prochain_ct
'End With
'la référence au tableau général
start_ref = "='" & Feuil1.Name & "'!"
marque = start_ref & donnees.Cells(1, 2).Address
model = start_ref & donnees.Cells(1, 3).Address
immat = start_ref & donnees.Cells(1, 4).Address
couleur = start_ref & donnees.Cells(1, 5).Address
service = start_ref & donnees.Cells(1, 6).Address
mise_en_circulation = start_ref & donnees.Cells(1, 7).Address
prochain_ct = start_ref & donnees.Cells(1, 8).Address
kms = start_ref & donnees.Cells(1, 9).Address
energie = start_ref & donnees.Cells(1, 10).Address
etat_du_vehicule = start_ref & donnees.Cells(1, 11).Address
observation = start_ref & donnees.Cells(1, 12).Address
With Sheets(destination)
.Cells(3, 2).Formula = marque
.Cells(3, 6).Formula = immat
.Cells(4, 2).Formula = model
.Cells(4, 6).Formula = mise_en_circulation
.Cells(5, 2).Formula = energie
.Cells(5, 6).Formula = kms
.Cells(8, 3).Formula = prochain_ct
End With
End Sub
A bientôt