yod6666
Messages postés37Date d'inscriptionvendredi 17 mars 2006StatutMembreDernière intervention 5 avril 2006
-
17 mars 2006 à 12:06
yod6666
Messages postés37Date d'inscriptionvendredi 17 mars 2006StatutMembreDerniè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 .
yod6666
Messages postés37Date d'inscriptionvendredi 17 mars 2006StatutMembreDerniè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????
yod6666
Messages postés37Date d'inscriptionvendredi 17 mars 2006StatutMembreDerniè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
yod6666
Messages postés37Date d'inscriptionvendredi 17 mars 2006StatutMembreDerniè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
Vous n’avez pas trouvé la réponse que vous recherchez ?
yod6666
Messages postés37Date d'inscriptionvendredi 17 mars 2006StatutMembreDerniè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.
yod6666
Messages postés37Date d'inscriptionvendredi 17 mars 2006StatutMembreDerniè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é.
yod6666
Messages postés37Date d'inscriptionvendredi 17 mars 2006StatutMembreDerniè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.
yod6666
Messages postés37Date d'inscriptionvendredi 17 mars 2006StatutMembreDerniè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.