Copier coller une liste triée

Résolu
yod6666 Messages postés 37 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 5 avril 2006 - 17 mars 2006 à 12:06
yod6666 Messages postés 37 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 5 avril 2006 - 24 mars 2006 à 10:11
Bonjour,
je direct dans le vif, j'ai un problème de prog sous excel. J'ai un tableau de 5 colonnes,A:le temps, B,C,D,E:des données.
J'exporte deux par deux (A:B,A:C,A:D...) sur d'autres feuilles pour pouvoir filtrer et éliminer des lignes aléatoire, quand la colonnes B ou c ou D est vides.
En gros il doit rester la donnée avec son temps (A)correspondant.
bref mon prog marche ,mais que sur deux colonnes, je peux recopier les valeur filtrer sans les cellules vides, pour en faire un graph, le restant me redonne telquel le tableau.
J'avoue s'est chaud, je pense qu'avec le programme vous comprendrai mieux mon besoin.

Sub tri()
Application.ScreenUpdating = False
Call renomme_feuille
Call A1
Call copi_coll
Call A2
Call copi_coll
Call A3
Call copi_coll
Call A4
Call copi_coll
End Sub
Sub renomme_feuille()
ActiveSheet.Name = "Tab_main"
End Sub
Sub copi_coll()
Selection.AutoFilter Field:=2, Criteria1:="<>"
Columns("A:B").Select
Selection.Copy
Columns("E:F").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True, Transpose:=False
Selection.AutoFilter Field:=2
ActiveSheet.Name = [B1]
End Sub
Sub A1()
Sheets.Add
Columns(1).Value = Sheets("Tab_main").Columns(1).Value
Columns(2).Value = Sheets("Tab_main").Columns(2).Value
End Sub
Sub A2()
Sheets.Add
Columns(1).Value = Sheets("Tab_main").Columns(1).Value
Columns(2).Value = Sheets("Tab_main").Columns(3).Value
End Sub
Sub A3()
Sheets.Add
Columns(1).Value = Sheets("Tab_main").Columns(1).Value
Columns(2).Value = Sheets("Tab_main").Columns(4).Value
End Sub
Sub A4()
Sheets.Add
Columns(1).Value = Sheets("Tab_main").Columns(1).Value
Columns(2).Value = Sheets("Tab_main").Columns(5).Value
End Sub
Donc c'est cette ligne qui marche pour seulement deux colonnes, je pense que c'est le filtrage qui est limité à partir d'un certaine valeur numérique, puisque les colonnes qui marche ont des valeurs suppérieur à 100, et les deux autres inférieur à 100.

Merci donc pour ce qui vont ce plancher sur le problème, vous auriez bien voulue exemple de fichier mais j'ai pas trouver comment l'envoyé dsl .

29 réponses

yod6666 Messages postés 37 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 5 avril 2006
21 mars 2006 à 15:00
Bon finalment je pense avoir trouvé, le pb.
J'en suis pas certain, mais presque, je demande trop au petit Excel.
j'ai remarqué qu'en prennant qu'une partie du tableau il pouvait le traiter correctement.
Mon seul souci maintenant et comment lui indiqué que je colle une partie puis l'autre en dessous????
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
21 mars 2006 à 15:08
Salut,

Peu etre en memorisant la plage copier (style de ligne 1 a 500) puis en reprenant la suite (de 501 as ...)

Mais ca m'etonne que ce soit une limitation d 'excel.

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
3
yod6666 Messages postés 37 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 5 avril 2006
21 mars 2006 à 17:01
bon ben au final ca tourne avec la solution de secour, si vous trouvez dites toujours. je mets mon prog en ligne.
Sub tri()
Application.ScreenUpdating = False
Call renomme_feuille
Call A1
Call copi_coll
Call A2
Call copi_coll
Call A3
Call copi_coll
Call A4
Call copi_coll
End Sub
Sub renomme_feuille()
ActiveSheet.Name = "Tab_main"
End Sub
Sub copi_coll()
Selection.AutoFilter Field:=2, Criteria1:="<>"
Range("A1:B1999").Select
Selection.Copy
Range("E1:F1999").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True, Transpose:=False
Range("A2000", [B2000].End(xlDown)).Select
Selection.Copy
Range("E:F").SpecialCells(xlCellTypeBlanks).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True, Transpose:=False
Selection.AutoFilter Field:=2
ActiveSheet.Name = [B1]
End Sub
Sub A1()
Sheets.Add
Columns(1).Value = Sheets("Tab_main").Columns(1).Value
Columns(2).Value = Sheets("Tab_main").Columns(2).Value
End Sub
Sub A2()
Sheets.Add
Columns(1).Value = Sheets("Tab_main").Columns(1).Value
Columns(2).Value = Sheets("Tab_main").Columns(3).Value
End Sub
Sub A3()
Sheets.Add
Columns(1).Value = Sheets("Tab_main").Columns(1).Value
Columns(2).Value = Sheets("Tab_main").Columns(4).Value
End Sub
Sub A4()
Sheets.Add
Columns(1).Value = Sheets("Tab_main").Columns(1).Value
Columns(2).Value = Sheets("Tab_main").Columns(5).Value
End Sub
3
yod6666 Messages postés 37 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 5 avril 2006
24 mars 2006 à 09:36
Me revoilà, MAIS ! avec une nouvelle question ....
Erreur d'éxécution "91"
Variable objet ou variable bloc with non définie.
ce message s'affiche quand je veux créer mon graph, plus exactement sur cette ligne:
ActiveChart.Location Where:=xlLocationAsObject, _Name:=DernierOnglet

voici le code entier :
Sub tri()
Dim MonGraphe As Chart, MaPlage As Range
Application.ScreenUpdating = False
ActiveSheet.Name = "Tab_main"
Set MonGraphe = ThisWorkbook.Charts.Add
Worksheets(1).Activate
TotalCol = ActiveSheet.UsedRange.Columns.Count
For TotalCol = TotalCol To 2 Step -1
Sheets.Add
Columns(1).Value = Sheets("Tab_main").Columns(1).Value
Columns(2).Value = Sheets("Tab_main").Columns(TotalCol).Value
Call copi_coll
DernierOnglet = ActiveSheet.Name
Set MaPlage = Worksheets(DernierOnglet).Range("A1", [B1].End(xlDown))
MonGraphe.ChartType = xlXYScatterSmoothNoMarkers
MonGraphe.SetSourceData MaPlage, xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:=DernierOnglet
Next TotalCol
End Sub
Sub copi_coll()
Selection.AutoFilter Field:=2, Criteria1:="<>"
Range("A1:B1999").Select
Selection.Copy
Range("E1:F1999").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True, Transpose:=False
Range("A2000", [B2000].End(xlDown)).Select
Selection.Copy
Range("E:F").SpecialCells(xlCellTypeBlanks).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True, Transpose:=False
Selection.AutoFilter Field:=2
ActiveSheet.Name = [B1]
Columns("A:D").Select
Selection.Delete Shift:=xlToLeft
End Sub
3

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

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
24 mars 2006 à 09:52
Salut,

J 'suis vraiment désolé j'ai pas eu le temps cette semaine de regarder ton .xls...

En revanche ce que je peux te dire rapidos c est que cette erreur vient lorsque tu essaies d'utiliser un objet alors que tu ne l'a pas creer .

Souvent c est qu il manque quelque part:
Exemple;

Dim Ex as Excel.application.
Set Ex = New Excel.Application

Ou bien encore
Dim Ws as Worksheet
Set WS = ActiveWorkBook.Sheets(1)

Voila en espérant que ca va t'aider un peu

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
3
yod6666 Messages postés 37 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 5 avril 2006
24 mars 2006 à 09:54
bon finalement ca passe je vous en dirais plus
Solution :
Dim MonGraphe As Object
3
yod6666 Messages postés 37 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 5 avril 2006
24 mars 2006 à 09:56
pas grave si tu n'as pas le temps, c'est en cherchant (beaucoup) qu'on apprend, merci de répondre déjà.
3
yod6666 Messages postés 37 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 5 avril 2006
24 mars 2006 à 09:59
Grosse erreur de ma part ca ne marche pas finalment.
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
17 mars 2006 à 12:19
Salut,

quand tu fait
Columns("A:B").Select
Selection.Copy
...
Selection.PasteSpecial ...

Tu ne fait que copier A et B

Tu peux essayer de faire un truc du style (pas tester, pas optimiser, mais bon....

Call A1
Call copi_coll("B")
Call A2
Call copi_coll("C")
Call A3
Call copi_coll("D")
Call A4
Call copi_coll("E")

Sub copi_coll(Colone2 as string)
Selection.AutoFilter Field:=2, Criteria1:="<>"
Range("A:A," & Colone2 & ":" & Colone2)
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True, Transpose:=False
Selection.AutoFilter Field:=2
End Sub
....

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
17 mars 2006 à 12:21
Oups j ai oublier un ptit truc c est pas:

Range("A:A," & Colone2 & ":" & Colone2)

Mais

Range("A:A," & Colone2 & ":" & Colone2).Select

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
yod6666 Messages postés 37 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 5 avril 2006
17 mars 2006 à 14:07
Merçi d'avoir répondu si vite.
Désolé pour le noms du sousprogramme copi colle, ce n'est pas très repréentif.
Si tu veux il me sert n'afficher que le tableau sans les cellules vides, de ce tableau, j'en fais une copie que je colle sur la même feuille.
puis je désactive le filtre pour affiché toute les lignes de la feuille de travail. ce qui va me permettre par la suite de faire un graph, et c'est ici que ca bloque pour 2 colonnes car quand je désactive le filtre rien n'a changé j'ai exactement le même tableau qu'avant avec des cellules vides dans la colonne des données.
0
yod6666 Messages postés 37 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 5 avril 2006
17 mars 2006 à 14:13
j'ai oublié de préciser que je n'ai pas de message d'erreur, tout ce déroule normalement comme si mon programme marché, mais quand on regarde les 4 feuilles ou ce trouve les données filtré, on s'appercoie que deux d'entre elle n'ont pas changé.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
17 mars 2006 à 14:56
Re,

Mais as tu reussi a resoucre ton probleme avec ce que je t'ai propose ou pas?

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
yod6666 Messages postés 37 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 5 avril 2006
17 mars 2006 à 15:20
Non malheuresement avec ta solution j'ai une erreur, pourrais tu me commenter le bout de ton code pour je puisse cibler l'erreur.
Je n'y connais rien en prog, j'essaye d'apprendre peu à peu.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
17 mars 2006 à 15:26
Re,

Le probleme c est que je n'ai pas trop le temps cet aprem (taf oblige...)

Ou est ce que ca coince exactement

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
yod6666 Messages postés 37 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 5 avril 2006
17 mars 2006 à 15:42
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True, Transpose:=False
sur le coller
Mais j'ai pas trop suivant ton truc, moi il faut que je puisse tirer un graphique de ce tableau au final.
0
yod6666 Messages postés 37 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 5 avril 2006
20 mars 2006 à 13:59
alors personne n'a trouvé ???
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
20 mars 2006 à 14:43
Re,

et avec un Selection.PasteSpecial (sans rien mettre, ou un Selection.paste)

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
yod6666 Messages postés 37 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 5 avril 2006
20 mars 2006 à 15:35
Selection.pasteSpecial (sans rien mettre) ne change rien
Selection.paste : ne fonction pas (Erreur: 438 propriété ou méthode non gérer par cet objet
0
yod6666 Messages postés 37 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 5 avril 2006
20 mars 2006 à 15:42
Je rappels, a ceux qui arrive, que je recherche le moyen de copie des lignes de tableau donc la cellules appartenant à la colonnes B est non vides.
0
Rejoignez-nous