Recherche Données Données et creation d'onglet avec remplissage données
4 réponses
Alex
Bonjour =E0 tous,
Je rencontre des soucis, et je ne sais pas comment faire.
Voil=E0, j'ai un onglet "base de donn=E9es", avec 5 colonnes : Nom
Immeuble, Nom Locataire, Etage, nombre de piece, et Loyer.
Mon premier probl=E8me :
Je voudrais cr=E9er autant d'onglet qu'il y de nom d'immeuble. Le nom de
l'onglet portant le nom de l'immeuble. Dans ma base, je peux avoir 20
lignes avec le nom Beaujon et 10 =E0 Lignes avec le nom Gare. Mes lignes
ne sont pas obligatoirement dans l'ordre alpha, mais je veudrais bien
entendu, que cela me fasse qu'un seul onglet Beaujon et qu'un onglet
Gare.
Mon second probl=E8me :
C'est de remplir mon onglet avec les donn=E9es correspondantes. Je
voudrais qu'en fonction du nombre d'etage. Si par exemple l'=E9tage le
plus =E9lev=E9 pour l'immeuble est 4 (=E9tages), que les donn=E9es se
positionnent de la facon suivante, =E0 savoir ceux 1er se positionne
sur ma 4eme ligne, ceux du 2eme sur la 3eme, ceux du 3 sur ma 2eme et
enfin ceux du 4=E8me sur ma 1ere ligne, (normalement j'ai pas de trou
entre les =E9tages) et qu'a chaque fois en commencant par la colonne A
j'ai le nom du locataire sur la colonne B le nombre de pi=E8ce et sur C
le Loyer. Si j'ai un deuxieme locataire pour le m=EAme =E9tage, m=EAme
op=E9ration mais =E0 partir de D, et un 3em =E0 partir de H....
Ma base :
Nom Immeuble Nom Etage Nombre de pi=E8ce Loyer
Alleray A 1 4 1200
Beaujon D 3 4 1200
Relais B 3 4 2300
Tour C 2 4 2880
Tour E 3 3 2300
Alleray E 4 2 1200
Alleray C 2 2 2300
Alleray A 2 2 2880
Alleray A 1 2 1200
Alleray E 1 2 1300
Beaujon B 1 2 1200
Exemple de r=E9sultat sur Alleray sur mon onglet cree Alleray :
E 4 2 1200
C 3 1 1200 E 3 1 1300
A 2 2 2880 C 2 2 2300
A 1 2 1200 F 1 4 1200 F 1 1 800
Merci d'avance pour votre aide.
Cordialement.
Alex
Je rencontre des soucis, et je ne sais pas comment faire.
Voilà, j'ai un onglet "base de données", avec 5 colonnes : Nom Immeuble, Nom Locataire, Etage, nombre de piece, et Loyer.
Mon premier problème :
Je voudrais créer autant d'onglet qu'il y de nom d'immeuble. Le nom de l'onglet portant le nom de l'immeuble. Dans ma base, je peux avoir 20 lignes avec le nom Beaujon et 10 à Lignes avec le nom Gare. Mes lignes ne sont pas obligatoirement dans l'ordre alpha, mais je veudrais bien entendu, que cela me fasse qu'un seul onglet Beaujon et qu'un onglet Gare.
Mon second problème :
C'est de remplir mon onglet avec les données correspondantes. Je voudrais qu'en fonction du nombre d'etage. Si par exemple l'étage le plus élevé pour l'immeuble est 4 (étages), que les données se positionnent de la facon suivante, à savoir ceux 1er se positionne sur ma 4eme ligne, ceux du 2eme sur la 3eme, ceux du 3 sur ma 2eme et enfin ceux du 4ème sur ma 1ere ligne, (normalement j'ai pas de trou entre les étages) et qu'a chaque fois en commencant par la colonne A j'ai le nom du locataire sur la colonne B le nombre de pièce et sur C le Loyer. Si j'ai un deuxieme locataire pour le même étage, même opération mais à partir de D, et un 3em à partir de H....
Ma base :
Nom Immeuble Nom Etage Nombre de pièce Loyer Alleray A 1 4 1200 Beaujon D 3 4 1200 Relais B 3 4 2300 Tour C 2 4 2880 Tour E 3 3 2300 Alleray E 4 2 1200 Alleray C 2 2 2300 Alleray A 2 2 2880 Alleray A 1 2 1200 Alleray E 1 2 1300 Beaujon B 1 2 1200
Exemple de résultat sur Alleray sur mon onglet cree Alleray :
E 4 2 1200 C 3 1 1200 E 3 1 1300 A 2 2 2880 C 2 2 2300 A 1 2 1200 F 1 4 1200 F 1 1 800
Merci d'avance pour votre aide. Cordialement. Alex
Je rencontre des soucis, et je ne sais pas comment faire.
Voilà, j'ai un onglet "base de données", avec 5 colonnes : Nom
Immeuble, Nom Locataire, Etage, nombre de piece, et Loyer.
Mon premier problème :
Je voudrais créer autant d'onglet qu'il y de nom d'immeuble. Le nom de
l'onglet portant le nom de l'immeuble. Dans ma base, je peux avoir 20
lignes avec le nom Beaujon et 10 à Lignes avec le nom Gare. Mes lignes
ne sont pas obligatoirement dans l'ordre alpha, mais je veudrais bien
entendu, que cela me fasse qu'un seul onglet Beaujon et qu'un onglet
Gare.
Mon second problème :
C'est de remplir mon onglet avec les données correspondantes. Je
voudrais qu'en fonction du nombre d'etage. Si par exemple l'étage le
plus élevé pour l'immeuble est 4 (étages), que les données se
positionnent de la facon suivante, à savoir ceux 1er se positionne
sur ma 4eme ligne, ceux du 2eme sur la 3eme, ceux du 3 sur ma 2eme et
enfin ceux du 4ème sur ma 1ere ligne, (normalement j'ai pas de trou
entre les étages) et qu'a chaque fois en commencant par la colonne A
j'ai le nom du locataire sur la colonne B le nombre de pièce et sur C
le Loyer. Si j'ai un deuxieme locataire pour le même étage, même
opération mais à partir de D, et un 3em à partir de H....
Ma base :
Nom Immeuble Nom Etage Nombre de pièce Loyer
Alleray A 1 4 1200
Beaujon D 3 4 1200
Relais B 3 4 2300
Tour C 2 4 2880
Tour E 3 3 2300
Alleray E 4 2 1200
Alleray C 2 2 2300
Alleray A 2 2 2880
Alleray A 1 2 1200
Alleray E 1 2 1300
Beaujon B 1 2 1200
Exemple de résultat sur Alleray sur mon onglet cree Alleray :
E 4 2 1200
C 3 1 1200 E 3 1 1300
A 2 2 2880 C 2 2 2300
A 1 2 1200 F 1 4 1200 F 1 1 800
Merci d'avance pour votre aide.
Cordialement.
Alex
Je rencontre des soucis, et je ne sais pas comment faire.
Voilà, j'ai un onglet "base de données", avec 5 colonnes : Nom Immeuble, Nom Locataire, Etage, nombre de piece, et Loyer.
Mon premier problème :
Je voudrais créer autant d'onglet qu'il y de nom d'immeuble. Le nom de l'onglet portant le nom de l'immeuble. Dans ma base, je peux avoir 20 lignes avec le nom Beaujon et 10 à Lignes avec le nom Gare. Mes lignes ne sont pas obligatoirement dans l'ordre alpha, mais je veudrais bien entendu, que cela me fasse qu'un seul onglet Beaujon et qu'un onglet Gare.
Mon second problème :
C'est de remplir mon onglet avec les données correspondantes. Je voudrais qu'en fonction du nombre d'etage. Si par exemple l'étage le plus élevé pour l'immeuble est 4 (étages), que les données se positionnent de la facon suivante, à savoir ceux 1er se positionne sur ma 4eme ligne, ceux du 2eme sur la 3eme, ceux du 3 sur ma 2eme et enfin ceux du 4ème sur ma 1ere ligne, (normalement j'ai pas de trou entre les étages) et qu'a chaque fois en commencant par la colonne A j'ai le nom du locataire sur la colonne B le nombre de pièce et sur C le Loyer. Si j'ai un deuxieme locataire pour le même étage, même opération mais à partir de D, et un 3em à partir de H....
Ma base :
Nom Immeuble Nom Etage Nombre de pièce Loyer Alleray A 1 4 1200 Beaujon D 3 4 1200 Relais B 3 4 2300 Tour C 2 4 2880 Tour E 3 3 2300 Alleray E 4 2 1200 Alleray C 2 2 2300 Alleray A 2 2 2880 Alleray A 1 2 1200 Alleray E 1 2 1300 Beaujon B 1 2 1200
Exemple de résultat sur Alleray sur mon onglet cree Alleray :
E 4 2 1200 C 3 1 1200 E 3 1 1300 A 2 2 2880 C 2 2 2300 A 1 2 1200 F 1 4 1200 F 1 1 800
Merci d'avance pour votre aide. Cordialement. Alex
> Je rencontre des soucis, et je ne sais pas comment faire.
> Voilà, j'ai un onglet "base de données", avec 5 colonnes : Nom > Immeuble, Nom Locataire, Etage, nombre de piece, et Loyer.
> Mon premier problème :
> Je voudrais créer autant d'onglet qu'il y de nom d'immeuble. Le nom d e > l'onglet portant le nom de l'immeuble. Dans ma base, je peux avoir 20 > lignes avec le nom Beaujon et 10 à Lignes avec le nom Gare. Mes ligne s > ne sont pas obligatoirement dans l'ordre alpha, mais je veudrais bien > entendu, que cela me fasse qu'un seul onglet Beaujon et qu'un onglet > Gare.
> Mon second problème :
> C'est de remplir mon onglet avec les données correspondantes. Je > voudrais qu'en fonction du nombre d'etage. Si par exemple l'étage le > plus élevé pour l'immeuble est 4 (étages), que les données se > positionnent de la facon suivante, à savoir ceux 1er se positionne > sur ma 4eme ligne, ceux du 2eme sur la 3eme, ceux du 3 sur ma 2eme e t > enfin ceux du 4ème sur ma 1ere ligne, (normalement j'ai pas de trou > entre les étages) et qu'a chaque fois en commencant par la colonne A > j'ai le nom du locataire sur la colonne B le nombre de pièce et su r C > le Loyer. Si j'ai un deuxieme locataire pour le même étage, même > opération mais à partir de D, et un 3em à partir de H....
> Ma base :
> Nom Immeuble Nom Etage Nombre de pièce Loyer > Alleray A 1 4 1200 > Beaujon D 3 4 1200 > Relais B 3 4 2300 > Tour C 2 4 2880 > Tour E 3 3 2300 > Alleray E 4 2 1200 > Alleray C 2 2 2300 > Alleray A 2 2 2880 > Alleray A 1 2 1200 > Alleray E 1 2 1300 > Beaujon B 1 2 1200
> Exemple de résultat sur Alleray sur mon onglet cree Alleray :
> E 4 2 1200 > C 3 1 1200 E 3 1 1300 > A 2 2 2880 C 2 2 2300 > A 1 2 1200 F 1 4 1200 F 1 1 800
> Merci d'avance pour votre aide. > Cordialement. > Alex- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Merci, pour ton lien, je vais déjà essayer avec ca, Ca à l'air déj à bien complet.
On 6 avr, 20:02, JB <boisgont...@hotmail.com> wrote:
> Je rencontre des soucis, et je ne sais pas comment faire.
> Voilà, j'ai un onglet "base de données", avec 5 colonnes : Nom
> Immeuble, Nom Locataire, Etage, nombre de piece, et Loyer.
> Mon premier problème :
> Je voudrais créer autant d'onglet qu'il y de nom d'immeuble. Le nom d e
> l'onglet portant le nom de l'immeuble. Dans ma base, je peux avoir 20
> lignes avec le nom Beaujon et 10 à Lignes avec le nom Gare. Mes ligne s
> ne sont pas obligatoirement dans l'ordre alpha, mais je veudrais bien
> entendu, que cela me fasse qu'un seul onglet Beaujon et qu'un onglet
> Gare.
> Mon second problème :
> C'est de remplir mon onglet avec les données correspondantes. Je
> voudrais qu'en fonction du nombre d'etage. Si par exemple l'étage le
> plus élevé pour l'immeuble est 4 (étages), que les données se
> positionnent de la facon suivante, à savoir ceux 1er se positionne
> sur ma 4eme ligne, ceux du 2eme sur la 3eme, ceux du 3 sur ma 2eme e t
> enfin ceux du 4ème sur ma 1ere ligne, (normalement j'ai pas de trou
> entre les étages) et qu'a chaque fois en commencant par la colonne A
> j'ai le nom du locataire sur la colonne B le nombre de pièce et su r C
> le Loyer. Si j'ai un deuxieme locataire pour le même étage, même
> opération mais à partir de D, et un 3em à partir de H....
> Ma base :
> Nom Immeuble Nom Etage Nombre de pièce Loyer
> Alleray A 1 4 1200
> Beaujon D 3 4 1200
> Relais B 3 4 2300
> Tour C 2 4 2880
> Tour E 3 3 2300
> Alleray E 4 2 1200
> Alleray C 2 2 2300
> Alleray A 2 2 2880
> Alleray A 1 2 1200
> Alleray E 1 2 1300
> Beaujon B 1 2 1200
> Exemple de résultat sur Alleray sur mon onglet cree Alleray :
> E 4 2 1200
> C 3 1 1200 E 3 1 1300
> A 2 2 2880 C 2 2 2300
> A 1 2 1200 F 1 4 1200 F 1 1 800
> Merci d'avance pour votre aide.
> Cordialement.
> Alex- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Merci, pour ton lien, je vais déjà essayer avec ca, Ca à l'air déj à
bien complet.
> Je rencontre des soucis, et je ne sais pas comment faire.
> Voilà, j'ai un onglet "base de données", avec 5 colonnes : Nom > Immeuble, Nom Locataire, Etage, nombre de piece, et Loyer.
> Mon premier problème :
> Je voudrais créer autant d'onglet qu'il y de nom d'immeuble. Le nom d e > l'onglet portant le nom de l'immeuble. Dans ma base, je peux avoir 20 > lignes avec le nom Beaujon et 10 à Lignes avec le nom Gare. Mes ligne s > ne sont pas obligatoirement dans l'ordre alpha, mais je veudrais bien > entendu, que cela me fasse qu'un seul onglet Beaujon et qu'un onglet > Gare.
> Mon second problème :
> C'est de remplir mon onglet avec les données correspondantes. Je > voudrais qu'en fonction du nombre d'etage. Si par exemple l'étage le > plus élevé pour l'immeuble est 4 (étages), que les données se > positionnent de la facon suivante, à savoir ceux 1er se positionne > sur ma 4eme ligne, ceux du 2eme sur la 3eme, ceux du 3 sur ma 2eme e t > enfin ceux du 4ème sur ma 1ere ligne, (normalement j'ai pas de trou > entre les étages) et qu'a chaque fois en commencant par la colonne A > j'ai le nom du locataire sur la colonne B le nombre de pièce et su r C > le Loyer. Si j'ai un deuxieme locataire pour le même étage, même > opération mais à partir de D, et un 3em à partir de H....
> Ma base :
> Nom Immeuble Nom Etage Nombre de pièce Loyer > Alleray A 1 4 1200 > Beaujon D 3 4 1200 > Relais B 3 4 2300 > Tour C 2 4 2880 > Tour E 3 3 2300 > Alleray E 4 2 1200 > Alleray C 2 2 2300 > Alleray A 2 2 2880 > Alleray A 1 2 1200 > Alleray E 1 2 1300 > Beaujon B 1 2 1200
> Exemple de résultat sur Alleray sur mon onglet cree Alleray :
> E 4 2 1200 > C 3 1 1200 E 3 1 1300 > A 2 2 2880 C 2 2 2300 > A 1 2 1200 F 1 4 1200 F 1 1 800
> Merci d'avance pour votre aide. > Cordialement. > Alex- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Merci, pour ton lien, je vais déjà essayer avec ca, Ca à l'air déj à bien complet.
michdenis
Bonjour,
Un fichier exemple ici : http://cjoint.com/?ebbGGRdHfO
Le contenu de la procédure :
Il faudra que tu modifies le nom de la feuille dans la procédure
'-------------------------------------------------------- Sub test() Dim Arr(), Rg As Range, C As Range, A As Integer Dim DerCol As Integer, DerLig As Long, Elt As Variant Dim Sh As Worksheet, NomFeuille As String
With Worksheets("Sheet1") ' Nom à adapter 'adresse de la colonne où sont les agents -> à adapter With .Range("B1:B" & .Range("B65536").End(xlUp).Row) .AdvancedFilter xlFilterInPlace, , , True For Each C In .Offset(1).Resize(.Rows.Count - 1). _ SpecialCells(xlCellTypeVisible) A = A + 1 ReDim Preserve Arr(1 To A) Arr(A) = C.Value Next End With .ShowAllData DerCol = .Cells.Find(What:="*", _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious).Column DerLig = .Cells.Find(What:="*", _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious).Row
'Il est pris pour acquis que ton tableau débute en A1 Set Rg = .Range("A1", .Cells(DerLig, DerCol)) End With
On Error Resume Next For Each Elt In Arr Err = 0 Set Sh = Worksheets(Elt) If Err = 0 Then Sh.Cells.Clear Else Err = 0 Set Sh = Worksheets.Add(after:=Sheets(Sheets.Count)) Sh.Name = Elt End If With Rg .AutoFilter field:=2, Criteria1:=Elt .SpecialCells(xlCellTypeVisible).Copy Sh.Range("A1") End With Next Rg.AutoFilter Worksheets(NomFeuille).Select Application.EnableEvents = True Application.ScreenUpdating = True
End Sub '--------------------------------------------------------
"Alex" a écrit dans le message de groupe de discussion :
Bonjour à tous,
Je rencontre des soucis, et je ne sais pas comment faire.
Voilà, j'ai un onglet "base de données", avec 5 colonnes : Nom Immeuble, Nom Locataire, Etage, nombre de piece, et Loyer.
Mon premier problème :
Je voudrais créer autant d'onglet qu'il y de nom d'immeuble. Le nom de l'onglet portant le nom de l'immeuble. Dans ma base, je peux avoir 20 lignes avec le nom Beaujon et 10 à Lignes avec le nom Gare. Mes lignes ne sont pas obligatoirement dans l'ordre alpha, mais je veudrais bien entendu, que cela me fasse qu'un seul onglet Beaujon et qu'un onglet Gare.
Mon second problème :
C'est de remplir mon onglet avec les données correspondantes. Je voudrais qu'en fonction du nombre d'etage. Si par exemple l'étage le plus élevé pour l'immeuble est 4 (étages), que les données se positionnent de la facon suivante, à savoir ceux 1er se positionne sur ma 4eme ligne, ceux du 2eme sur la 3eme, ceux du 3 sur ma 2eme et enfin ceux du 4ème sur ma 1ere ligne, (normalement j'ai pas de trou entre les étages) et qu'a chaque fois en commencant par la colonne A j'ai le nom du locataire sur la colonne B le nombre de pièce et sur C le Loyer. Si j'ai un deuxieme locataire pour le même étage, même opération mais à partir de D, et un 3em à partir de H....
Ma base :
Nom Immeuble Nom Etage Nombre de pièce Loyer Alleray A 1 4 1200 Beaujon D 3 4 1200 Relais B 3 4 2300 Tour C 2 4 2880 Tour E 3 3 2300 Alleray E 4 2 1200 Alleray C 2 2 2300 Alleray A 2 2 2880 Alleray A 1 2 1200 Alleray E 1 2 1300 Beaujon B 1 2 1200
Exemple de résultat sur Alleray sur mon onglet cree Alleray :
E 4 2 1200 C 3 1 1200 E 3 1 1300 A 2 2 2880 C 2 2 2300 A 1 2 1200 F 1 4 1200 F 1 1 800
Merci d'avance pour votre aide. Cordialement. Alex
Bonjour,
Un fichier exemple ici : http://cjoint.com/?ebbGGRdHfO
Le contenu de la procédure :
Il faudra que tu modifies le nom de la feuille dans la procédure
'--------------------------------------------------------
Sub test()
Dim Arr(), Rg As Range, C As Range, A As Integer
Dim DerCol As Integer, DerLig As Long, Elt As Variant
Dim Sh As Worksheet, NomFeuille As String
With Worksheets("Sheet1") ' Nom à adapter
'adresse de la colonne où sont les agents -> à adapter
With .Range("B1:B" & .Range("B65536").End(xlUp).Row)
.AdvancedFilter xlFilterInPlace, , , True
For Each C In .Offset(1).Resize(.Rows.Count - 1). _
SpecialCells(xlCellTypeVisible)
A = A + 1
ReDim Preserve Arr(1 To A)
Arr(A) = C.Value
Next
End With
.ShowAllData
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
'Il est pris pour acquis que ton tableau débute en A1
Set Rg = .Range("A1", .Cells(DerLig, DerCol))
End With
On Error Resume Next
For Each Elt In Arr
Err = 0
Set Sh = Worksheets(Elt)
If Err = 0 Then
Sh.Cells.Clear
Else
Err = 0
Set Sh = Worksheets.Add(after:=Sheets(Sheets.Count))
Sh.Name = Elt
End If
With Rg
.AutoFilter field:=2, Criteria1:=Elt
.SpecialCells(xlCellTypeVisible).Copy Sh.Range("A1")
End With
Next
Rg.AutoFilter
Worksheets(NomFeuille).Select
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
'--------------------------------------------------------
"Alex" <alex-m@orange.fr> a écrit dans le message de groupe de discussion :
b580e422-2532-4ef2-83fd-d98e8a04cf1b@11g2000yqr.googlegroups.com...
Bonjour à tous,
Je rencontre des soucis, et je ne sais pas comment faire.
Voilà, j'ai un onglet "base de données", avec 5 colonnes : Nom
Immeuble, Nom Locataire, Etage, nombre de piece, et Loyer.
Mon premier problème :
Je voudrais créer autant d'onglet qu'il y de nom d'immeuble. Le nom de
l'onglet portant le nom de l'immeuble. Dans ma base, je peux avoir 20
lignes avec le nom Beaujon et 10 à Lignes avec le nom Gare. Mes lignes
ne sont pas obligatoirement dans l'ordre alpha, mais je veudrais bien
entendu, que cela me fasse qu'un seul onglet Beaujon et qu'un onglet
Gare.
Mon second problème :
C'est de remplir mon onglet avec les données correspondantes. Je
voudrais qu'en fonction du nombre d'etage. Si par exemple l'étage le
plus élevé pour l'immeuble est 4 (étages), que les données se
positionnent de la facon suivante, à savoir ceux 1er se positionne
sur ma 4eme ligne, ceux du 2eme sur la 3eme, ceux du 3 sur ma 2eme et
enfin ceux du 4ème sur ma 1ere ligne, (normalement j'ai pas de trou
entre les étages) et qu'a chaque fois en commencant par la colonne A
j'ai le nom du locataire sur la colonne B le nombre de pièce et sur C
le Loyer. Si j'ai un deuxieme locataire pour le même étage, même
opération mais à partir de D, et un 3em à partir de H....
Ma base :
Nom Immeuble Nom Etage Nombre de pièce Loyer
Alleray A 1 4 1200
Beaujon D 3 4 1200
Relais B 3 4 2300
Tour C 2 4 2880
Tour E 3 3 2300
Alleray E 4 2 1200
Alleray C 2 2 2300
Alleray A 2 2 2880
Alleray A 1 2 1200
Alleray E 1 2 1300
Beaujon B 1 2 1200
Exemple de résultat sur Alleray sur mon onglet cree Alleray :
E 4 2 1200
C 3 1 1200 E 3 1 1300
A 2 2 2880 C 2 2 2300
A 1 2 1200 F 1 4 1200 F 1 1 800
Merci d'avance pour votre aide.
Cordialement.
Alex
Un fichier exemple ici : http://cjoint.com/?ebbGGRdHfO
Le contenu de la procédure :
Il faudra que tu modifies le nom de la feuille dans la procédure
'-------------------------------------------------------- Sub test() Dim Arr(), Rg As Range, C As Range, A As Integer Dim DerCol As Integer, DerLig As Long, Elt As Variant Dim Sh As Worksheet, NomFeuille As String
With Worksheets("Sheet1") ' Nom à adapter 'adresse de la colonne où sont les agents -> à adapter With .Range("B1:B" & .Range("B65536").End(xlUp).Row) .AdvancedFilter xlFilterInPlace, , , True For Each C In .Offset(1).Resize(.Rows.Count - 1). _ SpecialCells(xlCellTypeVisible) A = A + 1 ReDim Preserve Arr(1 To A) Arr(A) = C.Value Next End With .ShowAllData DerCol = .Cells.Find(What:="*", _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious).Column DerLig = .Cells.Find(What:="*", _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious).Row
'Il est pris pour acquis que ton tableau débute en A1 Set Rg = .Range("A1", .Cells(DerLig, DerCol)) End With
On Error Resume Next For Each Elt In Arr Err = 0 Set Sh = Worksheets(Elt) If Err = 0 Then Sh.Cells.Clear Else Err = 0 Set Sh = Worksheets.Add(after:=Sheets(Sheets.Count)) Sh.Name = Elt End If With Rg .AutoFilter field:=2, Criteria1:=Elt .SpecialCells(xlCellTypeVisible).Copy Sh.Range("A1") End With Next Rg.AutoFilter Worksheets(NomFeuille).Select Application.EnableEvents = True Application.ScreenUpdating = True
End Sub '--------------------------------------------------------
"Alex" a écrit dans le message de groupe de discussion :
Bonjour à tous,
Je rencontre des soucis, et je ne sais pas comment faire.
Voilà, j'ai un onglet "base de données", avec 5 colonnes : Nom Immeuble, Nom Locataire, Etage, nombre de piece, et Loyer.
Mon premier problème :
Je voudrais créer autant d'onglet qu'il y de nom d'immeuble. Le nom de l'onglet portant le nom de l'immeuble. Dans ma base, je peux avoir 20 lignes avec le nom Beaujon et 10 à Lignes avec le nom Gare. Mes lignes ne sont pas obligatoirement dans l'ordre alpha, mais je veudrais bien entendu, que cela me fasse qu'un seul onglet Beaujon et qu'un onglet Gare.
Mon second problème :
C'est de remplir mon onglet avec les données correspondantes. Je voudrais qu'en fonction du nombre d'etage. Si par exemple l'étage le plus élevé pour l'immeuble est 4 (étages), que les données se positionnent de la facon suivante, à savoir ceux 1er se positionne sur ma 4eme ligne, ceux du 2eme sur la 3eme, ceux du 3 sur ma 2eme et enfin ceux du 4ème sur ma 1ere ligne, (normalement j'ai pas de trou entre les étages) et qu'a chaque fois en commencant par la colonne A j'ai le nom du locataire sur la colonne B le nombre de pièce et sur C le Loyer. Si j'ai un deuxieme locataire pour le même étage, même opération mais à partir de D, et un 3em à partir de H....
Ma base :
Nom Immeuble Nom Etage Nombre de pièce Loyer Alleray A 1 4 1200 Beaujon D 3 4 1200 Relais B 3 4 2300 Tour C 2 4 2880 Tour E 3 3 2300 Alleray E 4 2 1200 Alleray C 2 2 2300 Alleray A 2 2 2880 Alleray A 1 2 1200 Alleray E 1 2 1300 Beaujon B 1 2 1200
Exemple de résultat sur Alleray sur mon onglet cree Alleray :
E 4 2 1200 C 3 1 1200 E 3 1 1300 A 2 2 2880 C 2 2 2300 A 1 2 1200 F 1 4 1200 F 1 1 800
Merci d'avance pour votre aide. Cordialement. Alex
Alex
Merci Denis pour ta réponse, Je suis en train de tester cela, je reviendrais vers vous, si j'ai besoin d'autres précisions. Cordialement. Alex
Merci Denis pour ta réponse,
Je suis en train de tester cela, je reviendrais vers vous, si j'ai
besoin d'autres précisions.
Cordialement.
Alex