Vba selection données dans une colonne

jmerillon Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

je débute dans le forum et dans vba... bonjour les dégâts...
je m'explique j'ai une série de données dans une colonne excel (25000 lignes)
Toutes les 200 ou 300 lignes la série se réinitialise, mais le nombre de lignes est variable, par contre, chaque fin de série est suivie d'un commentaire "dispensed...", j'ai donc ajouté une ligne vide sous chaque commentaire afin de les dissocier...
je souhaite récupérer ces données en dissociant bien chaque série afin d'en tirer des graphiques.

voila ce que j'ai fais pour l'instant en épluchant les forums :

Range("A1").Select
Do While Not (IsEmpty(ActiveCell)) 'jusqu'a la derniere cellule non vide

Cells.Find(What:="dispensed time", After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate 'chercher dispensed time

Selection.EntireRow.Insert ' selection ligne active

ActiveCell.Offset(2, 0).Activate ' decaler de 2 lignes vers le bas
Loop

cela me permet juste d'ajouter cette ligne vierge, mais je ne sais pas comment faire une sélection jusqu'à cette ligne...

quelqu'un peut il m'aider

3 réponses

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    suppose que les données commencent en A4

    <gras>Range("a4").Select ' se place sur la cellule A4 et la sélectionne
    Range(Selection, Selection.End(xlDown)).Select</gras>
    ( revient à faire shift+ flêche bas + fin)
    ta plage est sélectionnée

    A+
    0
  2. lulu37 Messages postés 80 Statut Membre 13
     
    Salut,

    Je ne sais pas si j'ai bien saisi ta demande, j'ai cru comprendre que toutes tes données sont dans la col 1 et donc plusieurs séries de données dans cette même colonne à transformer en plusieurs graph ...?

    Si c'est bien le cas, il faut déjà que tu intègres des variables dans ton code pour délimiter les 1ere et dernière ligne pour chaque série...et intégrer un code de créa graph dans ta boucle...
    Quel type de données as tu , quel type de graph veux tu ? si tu as un fichier, j'y jetterai un oeil.

    @+
    0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    cette macro écrit en feuille 2 les séries dans une colonne chacine

    Sub dissocier_series()
    Dim lig As Integer, lig2 As Integer, cptr As Integer
    
    Application.ScreenUpdating = False
    With Sheets(1)
        nbre = Application.CountIf(.Columns(1), "dispensed time")
        lig = 1
        For cptr = 1 To nbre
            lig2 = .Columns(1).Find("dispensed time", .Cells(lig, 1), xlValues).Row
            Sheets(2).Cells(2, cptr).Resize(lig2 - (lig + 1), 1) = .Range(.Cells(lig + 1, 1), .Cells(lig2 - 1, 1)).Value
            lig = lig2
        Next
        
    End With
    End Sub
    0