Créer un onglet en concatenant plusieurs plages de plusieurs onglets

Résolu
bandine Messages postés 7 Date d'inscription lundi 22 août 2005 Statut Membre Dernière intervention 1 mars 2008 - 22 août 2005 à 16:50
bandine Messages postés 7 Date d'inscription lundi 22 août 2005 Statut Membre Dernière intervention 1 mars 2008 - 27 août 2005 à 00:15
Bonjour,



Je débute en programmation VBA, je cherche de l'aide pour terminer mon fichier .xls de gestion du matériel.



J'ai un fichier avec un onglet par secteur, chaque onglet à la même
structure. Chaque onglet contient tous le matériel de son
secteur, l'emplacement et la quantité, par catégorie.



Je voudrais créer une liste récapitulative de tout le matériel
emplacement et quantité. Mais un simple copier coller ne suffit pas car
je ne veux pas des titres et sous-titres ni des lignes vides.



Voila la structure de mon tableau

Chaque onglet porte le nom du Service:

col A:A : Titre (Les titres sont fixes qu'il y ai du matériel ou pas)

col B:B : Sous-titre(De même que pour les titres)

col C:C : Nom du Matériel ou Pas d'équipement

col D:D : quantité

col E:E : emplacement



Je voudrais créer une fonction qui copie en colonne dans un nouvel onglet

col A:A: Service

col B:B : Nom du matériel sans les lignes de titre et de sous-titre ni les "Pas d'équipement"

col C:C : Quantité

col D:D: Emplacement



Si vous avez un petit programme qui fasse quelque chose d'équivalent, ca m'interesse. Ou un schéma directeur...



Je precise que je ne connais pas toutes les fonctions VBA d'ecxel.



Merci d'avance


Bandine

6 réponses

Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
22 août 2005 à 17:00
Hummm! Ca aurait été plus simple et moins risqué pour l'intégrité de tes données si tu étais passé par une petite base Access. Enfin je vais voir si j'ai pas une petite fonction que je pourrais adapter.
Je te tiens au courant
3
bandine Messages postés 7 Date d'inscription lundi 22 août 2005 Statut Membre Dernière intervention 1 mars 2008
22 août 2005 à 17:26
Je te remercie, mon principal problè c'est que j'ai pas Access et pas
de possibilité de l'installer et en plus je sais pas m'en servir.



J'espère que tu pourras m'aider :D

Bandine
0
Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
23 août 2005 à 11:46
Bon nous y voilà, j'ai récupéré une fonction que j'avais initialement écrite pour supprimer de mes listes des lignes et des colonnes en fonction de différents paramètres.
J'espère que c'est ce dont tu avais besoin

Sub traitement()
Dim str As String, cell As Range, Name As String, wbook As Workbook, ws As Worksheet, sheet As Sheets
Dim i As Integer, s As Integer, j As Integer, wsName As String, temp As String


s = 2
str = "Pas d'équipement"
wsName = ActiveWorkbook.Name
' création d'un classeur temporaire
Set wbook = Workbooks.Add
wbook.Sheets("Feuil1").Name = "Resume"
temp = wbook.Name

' re-positionne le curseur sur notre classeur
For Each ws In Worksheets
Name = ws.Name
Workbooks(wsName).Worksheets(Name).Activate
ws.Columns("A:A").Select
Selection.Insert Shift:=xlToRight
Range("A1").Select
ActiveCell.FormulaR1C1 = "Service"
For i = 2 To 100
For Each cell In Worksheets(Name).Range("D" & i & ":D" & i)
If Not cell.Value2 = "" Then
If cell.Value <> str Then
Worksheets(Name).Select
Range("A" & i).Select
ActiveCell.FormulaR1C1 = Name
Rows(i).Select
Selection.Copy
For j = s To s
ActiveSheet.Paste Destination:=wbook.Worksheets("Resume").Rows(j)
s = j + 1
Next j
End If
End If
Next cell
Next i
' suprime la colonne précédement créé
ws.Columns("A:A").Select
Selection.Delete
Next ws
' Création de la feuille de Résumé
Workbooks(wsName).Sheets.Add
Sheets(ActiveSheet.Name).Name = "Resume"
Worksheets("Resume").Move Before:=Worksheets.Item(1)

' re-positionne le curseur sur le classeur temporaire
Workbooks(temp).Activate
wbook.Worksheets("Resume").Select
Cells.Select
Selection.Copy
Workbooks(wsName).Worksheets("Resume").Activate
ActiveSheet.Paste
With Worksheets("Resume")
.Range("A1").Select
ActiveCell.FormulaR1C1 = "service"
.Range("B1").Select
ActiveCell.FormulaR1C1 = "Titre"
.Range("C1").Select
ActiveCell.FormulaR1C1 = "Sous-Titre"
.Range("D1").Select
ActiveCell.FormulaR1C1 = "Name"
.Range("E1").Select
ActiveCell.FormulaR1C1 = "Quantite"
.Range("F1").Select
ActiveCell.FormulaR1C1 = "Emplacement"
.Columns("B:B").Delete
.Columns("B:B").Delete
End With
' Supprime le classeur temporaire Quantite
wbook.Close SaveChanges:=False

End Sub
0
bandine Messages postés 7 Date d'inscription lundi 22 août 2005 Statut Membre Dernière intervention 1 mars 2008
23 août 2005 à 15:26
Merci beaucoup je vais étudier ca très vite.


Bandine
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
23 août 2005 à 15:33
Normalement je l'ai modifier de façon a ce qu'elle correspondent a tes besoins
0
bandine Messages postés 7 Date d'inscription lundi 22 août 2005 Statut Membre Dernière intervention 1 mars 2008
27 août 2005 à 00:15
Merci Merci Merci!!!



C'est parfait ca tourne au poil, et ca m'a permis de comprendre la
philosophie de ce language. Je vai meme lui mettre des extensions.



:smile:

Bandine
0
Rejoignez-nous