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 :

fusion cellule après automatisation des ajout via UserForm VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Responsable logistique
    Inscrit en
    Mai 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable logistique

    Informations forums :
    Inscription : Mai 2018
    Messages : 14
    Par défaut fusion cellule après automatisation des ajout via UserForm VBA
    Bonjour

    J'ai développé une application via VBA et tout fonctionne correctement, toutefois pour plus de clarté je souhaitais mettre en forme les cellules après l'ajout dans la feuille.

    Voila se que j'ai fais mais je n'arrive pas a automatiser le formatage sur tous les ajouts

    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
    36
    Sub Addme()
    '***********************************************************************************
    'Procédure permettant de rajouter la ligne de données dans le FTU
    '************************************************************************************
        Set NextRow = Sheets("Contact").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)
     
     
        For X = 1 To Cnum
            NextRow = Me.Controls(Ref & X).Value ' On récupère les valeurs des controls
            Set NextRow = NextRow.Offset(0, 1) ' on les insères dans la colonnes
     
        Next X
     
        Range("I11:K11").Select
        Range("K11").Activate
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
        Selection.Merge
        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.599993896298105
            .PatternTintAndShade = 0
        End With
     
    End Sub
    Nom : Captureformatage.PNG
Affichages : 501
Taille : 39,1 Ko
    Nom : Captureformatageajout.PNG
Affichages : 402
Taille : 39,2 Ko
    Nom : Captureformatageajout2.PNG
Affichages : 423
Taille : 41,2 Ko


    merci de votre aide!

  2. #2
    Membre éprouvé Avatar de Wololol
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 104
    Par défaut
    Bonjour,

    Si j'ai bien compris ta demande tu auras besoin d'un code de ce type :

    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
    Dim NextRow As Range
    nblig = Sheets("Contact").Cells(Rows.Count, 2).End(xlUp).Row
    Set NextRow = Sheets("Contact").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)
    For X = 1 To Cnum
    NextRow = 5 ' On récupère les valeurs des controls
    Set NextRow = NextRow.Offset(0, 1) ' on les insères dans la colonnes
    Next X
     
    With Range(Cells(nblig, 2) & ":" & Cells(nblig, Cnum))
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
        With .Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.599993896298105
            .PatternTintAndShade = 0
        End With
        .Merge
    End With
    A tester et à adapter.

    J’espère l'avoir appliquer au bonne cellules, car ton Range("I11:K11").Select me donne des doutes.

    Bonne journée

  3. #3
    Membre averti
    Homme Profil pro
    Responsable logistique
    Inscrit en
    Mai 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable logistique

    Informations forums :
    Inscription : Mai 2018
    Messages : 14
    Par défaut
    Salut Merci pour ton retour, mais j'ai donné le mauvais sub ....

    j'ai essayé d'appliquer le code sur le bon Sub mais cela ne fonctionne pas...

    les variables ont été déclaré



    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
    36
    37
    38
    39
    40
    41
    42
     
     Sub Addme2()
    '***********************************************************************************
    'Procédure permettant de rajouter la ligne de données dans le FTU
    '************************************************************************************
       'Déclaration des variables
     
    Dim Cnum As Integer
    Dim X As Integer
    Dim NextRow As Range
    Dim NextColumns As Range
    Dim Ref As String
     
     
    nblig = Sheets("F.T.U").Cells(11, Columns.Count).End(xlToLeft).Row
    Set NextRow = Sheets("F.T.U").Cells(11, Columns.Count).End(xlToLeft).Offset(0, 3)
    For X = 1 To Cnum
    NextRow = Me.Controls(Ref & X).Value ' On récupère les valeurs des controls
    Set NextRow = NextRow.Offset(0, 2) ' on les insères dans la colonnes
    Next X
     
    With Range(Cells(nblig, 2) & ":" & Cells(nblig, Cnum))
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
        With .Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.599993896298105
            .PatternTintAndShade = 0
        End With
        .Merge
    End With
     
    End Sub
    Merci pour votre retour


    Nom : Captureformatage_debogage avec 5.PNG
Affichages : 412
Taille : 41,6 Ko

  4. #4
    Membre éprouvé Avatar de Wololol
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 104
    Par défaut
    Re,

    J'avoue ne pas trop comprendre ton programme :

    Ton nblig va toujours contenir 11, car tu prend la ligne 11 et tu compte le nombre de colonne, puis récupère la coordonnée de la ligne

    De plus pourquoi que la ligne 11 ? Tu ne veux pas appliquer le style à chaque nouvelle ligne ?

    Peux-tu expliquer vraiment comment tu insère tes données comme ça on pourra résoudre ton problème, je pense personnellement qu'on peut se passer de l'Offset qui complique un peu trop le programme

    Bonne fin de journée

  5. #5
    Membre averti
    Homme Profil pro
    Responsable logistique
    Inscrit en
    Mai 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable logistique

    Informations forums :
    Inscription : Mai 2018
    Messages : 14
    Par défaut
    J'essaie de t'envoyer le fichier mais la taille dépasse la limite autorisé par le forum, mais en gros je fais une application pour mes techniciens, il doivent gerer l'avancement de leur chantier et facturer en fonction d'un pourcentage d'avancement.
    une partie des données sont enregistré via un Userform et un second userform complète certaine données dans un même tableau

    Nom : Capture1.PNG
Affichages : 389
Taille : 37,0 Ko
    Nom : userform1.PNG
Affichages : 401
Taille : 19,5 Ko
    Nom : userform2.PNG
Affichages : 395
Taille : 18,8 Ko

    tu peux essayer de télécharger le fichier depuis
    https://drive.google.com/open?id=13d...zlDbPweOdfjaMU

    En te remerciant

  6. #6
    Membre éprouvé Avatar de Wololol
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 104
    Par défaut
    Re,

    Pour voir si j'ai bien compris ta demande je t'ai créer deux méthodes de copie et de modification de format (en conservant ton style d'insertion), je pense qu'il doit y en avoir de mieux mais voici :

    Méthode 1:

    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
    Private Sub CommandButton1_Click()
    Dim NextRow As Range
    Cnum = 3 ' j'ai mis ça car je ne sais pas comment tu récupère la valeur
     
    Set NextRow = Sheets("Feuil1").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)
     
    For X = 1 To Cnum
    NextRow = "Test 1" 'Me.Controls(Ref & X).Value ' On récupère les valeurs des controls
    With NextRow
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
        With .Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.599993896298105
            .PatternTintAndShade = 0
     
     
        End With
    End With
     
    Set NextRow = NextRow.Offset(0, 1) ' on les insères dans la colonnes
     
    Next X
     
    End Sub
    Méthode 2 :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Private Sub CommandButton2_Click()
    Dim NextRow As Range
    Cnum = 3
    With Sheets("Feuil1").Range("A1") ' format de référence sauvegarder dans cette cellule
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
        With .Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.599993896298105
            .PatternTintAndShade = 0
     
     
        End With
        End With
     
     
     
     
     
     
     
    Set NextRow = Sheets("Feuil1").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)
     
    Range("A1").Copy 'on copie la cellule de ref
     
    For X = 1 To Cnum
    NextRow = "Test 2" 'Me.Controls(Ref & X).Value ' On récupère les valeurs des controls
     
    NextRow.PasteSpecial xlPasteFormats
     
    Set NextRow = NextRow.Offset(0, 1) ' on les insères dans la colonnes
     
    Next X
     
    End Sub
    Et le petit fichier test pour voir si c'était ce que tu voulais

    Bonne journée
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [XL-2010] Modification ou ajouter via userform
    Par toctoc dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/09/2013, 12h01
  2. [XL-2003] Ajout via Userform
    Par meumeu73.1 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/11/2011, 11h32
  3. Réponses: 1
    Dernier message: 21/09/2011, 11h21
  4. [XL-2007] Suppression fusion cellules et recopie des données
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/08/2010, 12h11
  5. [Gimp] Automatiser des tâches via un script.
    Par Zaltymbunk dans le forum Imagerie
    Réponses: 3
    Dernier message: 13/01/2009, 11h17

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