Pb affichage donnée dans excel
juju
-
gbinforme Messages postés 15481 Date d'inscription Statut Contributeur Dernière intervention -
gbinforme Messages postés 15481 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je dispose d'un tableau excel contenant 25colonnes et 2000lignes. La première colonne contient une date. a partir de ce tableau, je voudrai pouvoir afficher dans une autre feuille les données correspondant à une date choisie auparavant.
ex:
date début en c3 = 20/10/2007
date fin en d3 = 21/10/2007
j'arrive à afficher les données correspondant à la date mais actuellement mon affichage s'effectue sur l'ensemble de la ligne (de la colonne A à ZZ). Or, j'ai placé une colonne entête dans la colonne A de la feuille de destination. je voudrai donc que l'affichage démarre dans la colonne B fin de conserver ma colonne entête. avec quelle fonction je peux le réaliser?
voici ma macro actuelle:
Sub affichage_données()
Dim lig_data As Long
Dim Lig_S As Long
Dim Cel As Range
Dim F As Worksheet
Dim lig_titre As Long
'effacement ancienne donnée
lig_data = [c65536].End(xlUp).Row
If lig_data > 4 And col > 2 Then Rows("5:" & lig_data).Delete
'traitement affichage donnée
Set F = Sheets("données brutes") 'feuille contenant les données de base
lig_data = 6
lig_titre = 5
Lig_S = 2
F.Rows(Lig_S).Copy Destination:=Rows(lig_titre)
For Each Cel In F.Range("c3:G" & F.[c65536].End(xlUp).Row)
If Range("c3") <= Cel And Cel <= Range("d3") And Cel.Row <> Lig_S Then
Lig_S = Cel.Row
F.Rows(Lig_S).Copy Destination:=Rows(lig_data)
lig_data = lig_data + 1
End If
Next Cel
End Sub
je dispose d'un tableau excel contenant 25colonnes et 2000lignes. La première colonne contient une date. a partir de ce tableau, je voudrai pouvoir afficher dans une autre feuille les données correspondant à une date choisie auparavant.
ex:
date début en c3 = 20/10/2007
date fin en d3 = 21/10/2007
j'arrive à afficher les données correspondant à la date mais actuellement mon affichage s'effectue sur l'ensemble de la ligne (de la colonne A à ZZ). Or, j'ai placé une colonne entête dans la colonne A de la feuille de destination. je voudrai donc que l'affichage démarre dans la colonne B fin de conserver ma colonne entête. avec quelle fonction je peux le réaliser?
voici ma macro actuelle:
Sub affichage_données()
Dim lig_data As Long
Dim Lig_S As Long
Dim Cel As Range
Dim F As Worksheet
Dim lig_titre As Long
'effacement ancienne donnée
lig_data = [c65536].End(xlUp).Row
If lig_data > 4 And col > 2 Then Rows("5:" & lig_data).Delete
'traitement affichage donnée
Set F = Sheets("données brutes") 'feuille contenant les données de base
lig_data = 6
lig_titre = 5
Lig_S = 2
F.Rows(Lig_S).Copy Destination:=Rows(lig_titre)
For Each Cel In F.Range("c3:G" & F.[c65536].End(xlUp).Row)
If Range("c3") <= Cel And Cel <= Range("d3") And Cel.Row <> Lig_S Then
Lig_S = Cel.Row
F.Rows(Lig_S).Copy Destination:=Rows(lig_data)
lig_data = lig_data + 1
End If
Next Cel
End Sub
A voir également:
- Pb affichage donnée dans excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Trier des données excel - Guide
- Affichage double ecran - Guide
5 réponses
bonjour
col n'étant pas défini il est en valeur zéro en ta suppression ne peux se faire.
Pour copier à partir de la colonne B il ne faut pas utiliser rows mais cells (les cellules)
Tu peux enlever " And Cel.Row <> Lig_S" car ta plage choisie commence en ligne 3 et Lig_S est égal à 2.
If lig_data > 4 And col > 2 Then Rows("5:" & lig_data).Delete
col n'étant pas défini il est en valeur zéro en ta suppression ne peux se faire.
Pour copier à partir de la colonne B il ne faut pas utiliser rows mais cells (les cellules)
F.cells(Lig_S,1).resize(1,X).Copy Destination:=cells(lig_data,2) avec X = le nombre de colonnes que tu veux copierPour éviter la sélection des cellules par copy tu peux aussi utiliser :
cells(lig_data,2).resize(1,X).value = F.cells(Lig_S,1).resize(1,X).value avec X = le nombre de colonnes que tu veux copier
If Range("c3") <= Cel And Cel <= Range("d3") And Cel.Row <> Lig_S Then
Tu peux enlever " And Cel.Row <> Lig_S" car ta plage choisie commence en ligne 3 et Lig_S est égal à 2.
Merci pour cette réponse, ça marche pour la copie en colonne B mais par contre à chaque fois que je relance un tri, j'efface toujours ma colonne A avec ma ligne de code :
lig_data = [b65536].End(xlUp).Row
If lig_data > 4 Then Rows("5:" & lig_data).Delete
Je débute dans VBA et pour l'instant je nage un peu, donc vous pouviez continuer à m'aider, ça serait super sympa...
Merci d'avance.
juju
lig_data = [b65536].End(xlUp).Row
If lig_data > 4 Then Rows("5:" & lig_data).Delete
Je débute dans VBA et pour l'instant je nage un peu, donc vous pouviez continuer à m'aider, ça serait super sympa...
Merci d'avance.
juju
bonjour
Etant donné que tu gardes ta colonne A, avec Clearcontents tu effaces les données mais tu peux garder la mise en forme éventuelle.
Avec resize, tu te crées une plage de cellules dont tu détermines la largeur et la hauteur avec le nombre de lignes et de colonnes.
lig_data = [b65536].End(xlUp).Row If lig_data > 4 Then cells(5 ,2).resize( lig_data - 4, X).clearcontents avec X = le nombre de colonnes que tu veux effacer
Etant donné que tu gardes ta colonne A, avec Clearcontents tu effaces les données mais tu peux garder la mise en forme éventuelle.
Avec resize, tu te crées une plage de cellules dont tu détermines la largeur et la hauteur avec le nombre de lignes et de colonnes.
Merci beaucoup,
ça réponds à ce que je cherchais, je cherche maitenant à effacer (ou à remettre blanc) les couleurs des cellules de cette même plage...
je reste zen, et je vais m'en sortir
ça réponds à ce que je cherchais, je cherche maitenant à effacer (ou à remettre blanc) les couleurs des cellules de cette même plage...
je reste zen, et je vais m'en sortir
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour
avec Clearcontents tu effaces les données mais tu peux garder la mise en forme éventuelle et donc la couleur par exemple, mais si tu veux enlever la forme tu mets "delete".
Si tes cellules "copiées" sont colorées sur l'autre feuille, utilises la version sans "copy" que je t'ai mis plus haut.
lig_data = [b65536].End(xlUp).Row If lig_data > 4 Then cells(5 ,2).resize( lig_data - 4, X).delete avec X = le nombre de colonnes que tu veux effacer
avec Clearcontents tu effaces les données mais tu peux garder la mise en forme éventuelle et donc la couleur par exemple, mais si tu veux enlever la forme tu mets "delete".
Si tes cellules "copiées" sont colorées sur l'autre feuille, utilises la version sans "copy" que je t'ai mis plus haut.