Problème sur excel et VBA assez simple

jibs

XLDnaute Nouveau
Bonjour,

Je cherche à faire une procédure qui me permette de remplir un onglet d'un fichier excel à partir d'un autre onglet du même fichier.
J'arrive à le faire pour une ligne mais je n'arrive pas à faire un boucle qui me permette de la faire pour toutes les lignes de mon tableau (je ne connais pas bien le language VBA) Ci-joint un fichier excel pour mieux expliquer la situation. Je cherche a faire ce que j'ai fait pour deux fiches pour toutes les lignes présentes dans le tableau et il me faut aussi renommer chaque onglet par le nom de chaque ligne. Voilà
Si jamais quelqu'un peut m'aider concernant le code cela me serait très utile
 

Pièces jointes

  • exemple.xlsx
    13.5 KB · Affichages: 28
  • exemple.xlsx
    13.5 KB · Affichages: 29
  • exemple.xlsx
    13.5 KB · Affichages: 29

kjin

XLDnaute Barbatruc
Re : Problème sur excel et VBA assez simple

bonjour,
Brut de décoffrage (voir la note en bas)
Code:
Sub sssss()
Dim i%, t As Range, newF$
With Feuil1
    For i = 1 To .Range("A65000").End(xlUp).Row
        Set r = .Cells(i, 2).Resize(1, 4) 'copie 4 colonnes comme dans ton exemple !
        newF = .Cells(i, 1)
        Feuil2.Copy after:=Sheets(Sheets.Count)
        With ActiveSheet
            .Name = newF
            .Cells(3, 4) = newF
            .Cells(6, 3).Resize(r.Rows.Count, r.Columns.Count) = r.Value
        End With
    Next
End With
End Sub
Note que tu n'indiques pas
- quoi faire si la feuille existe déjà
- quoi faire si plusieurs lignes concerne le même composant
A+
kjin
 

jibs

XLDnaute Nouveau
Re : Problème sur excel et VBA assez simple

En effet ca marche très bien du coup. Merci beaucoup !!!

Est-ce que tu pourrais juste m'expliquer à quoi serve les différentes fonctions auquelles tu as fait appel pour que je puisse l'adapter à mon véritable fichier...

En réalité le vrai fichier est comme ci - joint!

Mais je comprendrai si vous n 'avez pas de temps à perdre avec ça. Comme je vous l 'ai dit je ne suis pas très bon en programmation et je ne voudrais pas vous embeter avec ca...
 

Pièces jointes

  • exemple.xlsx
    15.7 KB · Affichages: 27
  • exemple.xlsx
    15.7 KB · Affichages: 31
  • exemple.xlsx
    15.7 KB · Affichages: 31

jibs

XLDnaute Nouveau
Re : Problème sur excel et VBA assez simple

Voici le code que j'ai réalisé en reprenant le tien pour le faire sur la totalité des données dont j'ai besoin.
C'est un peu lourd mais ca marche, sauf quand il y a un nom qui comporte des éléments incorrects comme des paranthèses, des crochets, etc
Sub Macro1()

' Macro1 Macro

Dim i%, t As Range, newF$

With Feuil1

For i = 1 To .Range("A65000").End(xlUp).Row

Set r = .Cells(i, 2).Resize(1, 4)
Set r1 = .Cells(i, 6).Resize(1, 4)
Set r2 = .Cells(i, 10).Resize(1, 4)
Set r3 = .Cells(i, 14).Resize(1, 4)
Set r4 = .Cells(i, 18).Resize(1, 4)
Set r5 = .Cells(i, 23).Resize(1, 4)
Set r5 = .Cells(i, 27).Resize(1, 4)
Set r5 = .Cells(i, 32).Resize(1, 4) 'copie 4 colonnes !

newF = .Cells(i, 1)
Feuil2.Copy after:=Sheets(Sheets.Count)

With ActiveSheet

.Name = newF
.Cells(4, 3) = newF
.Cells(16, 2).Resize(r.Rows.Count, r.Columns.Count) = r.Value
.Cells(17, 2).Resize(r.Rows.Count, r.Columns.Count) = r1.Value
.Cells(18, 2).Resize(r.Rows.Count, r.Columns.Count) = r2.Value
.Cells(19, 2).Resize(r.Rows.Count, r.Columns.Count) = r3.Value
.Cells(20, 2).Resize(r.Rows.Count, r.Columns.Count) = r4.Value
.Cells(21, 2).Resize(r.Rows.Count, r.Columns.Count) = r5.Value

End With

Next

End With

End Sub
 
Dernière édition:

Discussions similaires

Réponses
4
Affichages
232

Statistiques des forums

Discussions
312 679
Messages
2 090 846
Membres
104 677
dernier inscrit
soufiane12