Pb affichage donnée dans excel

juju -  
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
A voir également:

5 réponses

gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
bonjour

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 copier 
Pour é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.
0
juju49
 
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
0
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
bonjour

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.
0
juju49
 
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
0

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

Posez votre question
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
bonjour

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.
0