IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Copie de texte en début de timeline (gantt) [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Septembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Par défaut Copie de texte en début de timeline (gantt)
    Bonjour à tous,

    Dans la mise en forme d'un diagramme de Gantt Excel, je cherche pour chaque ligne de tâche à copier le texte contenu dans la cellule de la colonne "D" par exemple, dans la cellule correspondant au début de la tâche ou à la 1ère date affichée si la date de début est antérieure à la date du jour ?

    Nom : Capture d’écran 2021-03-12 110409.png
Affichages : 231
Taille : 10,2 Ko

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 437
    Par défaut
    Bonjour,

    Comme si l'on place des formules dans la plage du tableau les textes ne s'étendent plus d'une cellule sur les autres, il ne me semble pas possible de faire cela sans passer par VBA, par exemple ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Option Explicit
     
    Sub AjoutTxt(kR As Long)            '--- suppose I3 = première date du tableau
       Dim nJ As Long
       If Cells(kR, 8).Value = "" Then Exit Sub        '--- pas de date Fin
       If Cells(kR, 8).Value < Range("I3").Value Then  '--- 8 = colonne Fin (H)
          '--- anomalie: date Fin précède date du premier jour du tableau
          Cells(kR, 9).Value = "? dépassé"
       Else
          nJ = Cells(kR, 7).Value - Range("I3").Value  '--- 7 = colonne Début (G)
          If nJ < 0 Then nJ = 0
          Cells(kR, 9 + nJ).Value = Cells(kR, 4).Value '--- 9 = colonne I, 4 = colonne D
       End If
       '--- non vérifié: date Début dépasse date dernier jour du tableau
       '--- non vérifié: textes déjà inscrits (et à effacer)
    End Sub
     
    Sub MajTxt()
       Dim kR As Long
       kR = 6                                 '--- 6 = n° première ligne de données
       While Cells(kR, 4).Value <> ""         '--- parcourir données en colonne n°4 (D)
          AjoutTxt kR
          kR = kR + 1
       Wend
    End Sub
    Cordialement.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre du Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Septembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Par défaut
    C'est parfait !!

    Merci beaucoup EricDgn !!

  4. #4
    Membre du Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Septembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Par défaut
    Je vais maintenant un peu plus loin dans ma mise en forme.

    J'aimerai pouvoir regrouper sur la même ligne, les différentes tâches du même projet.

    Les étapes serait:

    1-insertion d'une nouvelle ligne vierge au début de chaque projet
    2-regroupement des tâches sur la ligne vierge.
    3-"grouper" les tâches du même projet
    4-réduire les groupes pour n'afficher que la ligne de regroupement

    Merci d'avance

  5. #5
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 437
    Par défaut
    Bonjour,

    Pour le point 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub NouvellesLignes()         '--- à ne pas répéter plusieurs fois !
       Dim kR As Long
       kR = 6                                 '--- 6 = n° première ligne de données
       While Cells(kR, 4).Value <> ""         '--- parcourir données en colonne n°4 (D)
          If Cells(kR, 4).Value <> Cells(kR - 1, 4).Value Then
             '--- insère une ligne avec le formatage de la ligne en dessous
             Rows(kR).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
             Cells(kR, 4).Value = Cells(kR + 1, 4).Value  '--- reprend le nom
          End If
          kR = kR + 1
       Wend
    End Sub
    pour les ponts 3 et 4:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub Groupage()
        Dim r As Range
        Dim v As Variant
        Dim i As Long, j As Long
        With ActiveSheet
            On Error Resume Next              '--- erreur si pas de groupe
            .Outline.ShowLevels RowLevels:=8  '--- ouvre tous les groupes
            .Rows.Ungroup                     '--- dégroupe tout
            On Error GoTo 0
            Set r = .Range("D6", .Cells(.Rows.Count, 4).End(xlUp))
        End With
        Debug.Print r.Address
        With r
            '--- parcourt colonne 1 de la plage r pour identifier les groupes
            j = 1
            v = .Cells(j, 1).Value
            For i = 2 To .Rows.Count
                If v <> .Cells(i, 1) Then
                    '--- changement de valeur, crée un nouveau groupe
                    v = .Cells(i, 1)
                    If i > j + 1 Then
                        .Cells(j + 1, 1).Resize(i - j - 1, 1).Rows.Group
                    End If
                    j = i
                    v = .Cells(j, 1).Value
                End If
            Next
            '--- crée le dernier groupe
            If i > j + 1 Then
                .Cells(j + 1, 1).Resize(i - j - 1, 1).Rows.Group
            End If
            '--- réduit tous les groupes
            .Parent.Outline.ShowLevels RowLevels:=1
        End With
    End Sub
    Pour le point 2, plus compliqué. Il serait préférable de clôturer cette discussion et d'en ouvrir une autre pour ce point.

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Copie de texte dans le press papier
    Par intelcore dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/08/2007, 21h50
  2. Simple copie du texte d'une cellule excel dans le titre d'un graphique chart
    Par pinto_armindo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/05/2007, 10h59
  3. copie de texte dans un tableau c++
    Par snoopgod4 dans le forum C++
    Réponses: 5
    Dernier message: 09/03/2007, 11h38
  4. Insérer du texte au début d'un champ
    Par miltonis dans le forum Langage SQL
    Réponses: 5
    Dernier message: 16/02/2007, 12h23
  5. [sql2k][dts] : copie fichier texte vers table
    Par gatsu07 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/06/2006, 10h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo