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 :

Reproduire la mise en forme N fois en fonction d'une variable [XL-2019]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Qualiticien
    Inscrit en
    Août 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Qualiticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2019
    Messages : 41
    Points : 30
    Points
    30
    Par défaut Reproduire la mise en forme N fois en fonction d'une variable
    Bonjour,

    Petit message suite à un problème que j'ai rencontré sur Excel 2019 et en VBA et pour lequel j'ai été incapable de trouver une réponse qui me correspond jusqu’à présent sur les différents forums

    Explications :
    J'ai une cellule "Nombre de paramètres" dans lequel l'utilisateur peut renseigner de façon libre un chiffre (sans limites). Et une autre partie nommée "Nom du paramètre".

    Je souhaiterai que lorsque l'utilisateur entre le chiffre qu'il désire, cela créé une mise en forme spécifique sur cette cellule. et que ca le fasse autant de fois que le chiffre indiqué
    exemple : 3 paramètre alors 3 cellules

    Je précise que le nom de ces paramètre peut être assez grand et qu'il est impossible de part la structure du fichier d'agrandir la colonne il faudra donc aussi les fusionner.
    un exemple :
    Nom : Exemple 1.PNG
Affichages : 81
Taille : 5,5 Ko

    J'ai réussis à le faire une fois mais je n'ai pas réussis à le reproduire n fois en gros j'arrive à écrire uniquement sur la cellule X21. je vous montre ce que j'ai :
    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
    Sub test_macro()
    Dim x As Integer
    Dim derligne As Range
    Dim maplage As Range
    Dim i As Integer
     
    Sheets("Concep. - Réal. électronique").Select
    Range("Z16").Select
    x = Range("Z16").Value
    For i = 1 To x
    Cells(21, 24).Value = "hihi"
    Cells(21, 24).Select
    Range(Cells(21, 24), Cells(21, 25)).MergeCells = True
    Range(Cells(21, 24), Cells(21, 25)).Select
    Next i
        Selection.AutoFill Destination:=Range("X24:Y2" & i), Type:=xlFillDefault
    End Sub
    Avec cette macro j'essaye d'écrire "hihi" dans les cellules pour vérifier (Moins chiant que de mettre une vraie mise en forme à chaque fois )
    Mais c'est au niveau du recopier vers le bas n fois que je n'y arrive pas et que je suis bloqué !

    Je suis assez mauvais en VBA mais j'essaye de faire des modifications pour voir ce que ça peut changer donc il est fort probable que mon code vous pique les yeux et je m'en excuse il est le fruit de 12h de prise de tête et de tests en tout genre pour essayer de tout faire !

    Ça, c'est le rendu que j'ai pour le moment quand je retire la ligne car elle fait de la merde
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Selection.AutoFill Destination:=Range("X24:Y2" & i), Type:=xlFillDefault
    Nom : Exemple 2.PNG
Affichages : 77
Taille : 3,2 Ko

    Je vous remercie d'avance de prendre le temps de me répondre et d'essayer de m'aider à solutionner ce problème qui va finir par me rendre fou

    Cordialement,
    Axel

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonsoir,

    Essayez ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Sheets("Concep. - Réal. électronique").Select
        x = Range("Z16").Value
        For i = 1 To x
            Cells(i + 20, 24).Value = "hihi"
            Range(Cells(i + 20, 24), Cells(i + 20, 25)).MergeCells = True
        Next i
    Cdlt

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Qualiticien
    Inscrit en
    Août 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Qualiticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2019
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Ok alors parfait ! c'est exactement ce que je voulais ! (Le pire c'est que j'avais commencé à tenté quelque chose de similaire mais sans grande réussite

    Y'a t'il un moyen de la lancer avec la feuille directement au changement de valeur ? j'ai tenté avec
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim x As Integer
    Dim derligne As Range
    Dim maplage As Range
    Dim i As Integer
     
     
      Sheets("Concep. - Réal. électronique").Select
      Range("X21:Y100000").Clear
        x = Range("Z16").Value
        For i = 1 To x
            Cells(i + 20, 24).Value = "hihi"
            Cells(i + 20, 24).Interior.Color = RGB(100, 156, 100)
            Range(Cells(i + 20, 24), Cells(i + 20, 25)).MergeCells = True
        Next i
    End Sub
    Mais ca veut pas, faut t'il intégrer quelque chose de plus ?
    Je présume qu'il faut nommer la "Target" comme étant la cellule ou on rentre la donnée mais ça marche pas
    J'me suis également permit d'ajouter un .clear au début comme ça si ils décident de baisser le nombre de paramètre ça suit.

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    A mettre dans le module de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim i As Long
        If Target.Address = "$Z$16" And IsNumeric(Target) Then 'si la cellule modifiée est bien Z16 et si la valeur est numérique
            Application.ScreenUpdating = False 'Evite les scintillements de l'affichage et augmente la vitesse d'exécution.
            Application.EnableEvents = False 'inhibe la détection de tout changement dans la feuille, ne rend pas la main au système
            Range("X21:Y100000").Clear 'on efface les précédents résultats
            For i = 1 To Target.Value 'on boucle de 1 jusqu'à la valeur saisie en Z16
                Cells(i + 20, 24).Value = "hihi" 'Remplissage des cellules
                Cells(i + 20, 24).Interior.Color = RGB(100, 156, 100) 'Application d'une couleur de fond
                Range(Cells(i + 20, 24), Cells(i + 20, 25)).MergeCells = True 'fusion des cellules
            Next i 'boucle
            Application.EnableEvents = True 'rend la main au système afin qu'il puisse détecter toute modification sur la feuille
        End If
    End Sub
    Cdlt

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Qualiticien
    Inscrit en
    Août 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Qualiticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2019
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    J'ai copié collé le code dans la feuille, j'ai supprimé du coup le code dans le module (qui du coup ne servirait plus à rien)

    Cependant, rien ne se passe, j'ai bien fait attention à ce que le projet soit bien réinitialisé histoire qu'il reste pas bloqué, j'ai bien collé dans la bonne feuille et j'ai bien effectué un changement dans la cellule Z16 mais rien...

    Une idée ? (J'ai bien fais gaffe aussi a regarder si la feuille n'était pas bloquée ou si j'étais pas en mode créateur et non..)J'ai même tenté F9 pour mettre à jour l'affichage

    Mais merci pour la rapidité de réponse et l'efficacité

    Cordialement,
    Axel

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bizarre, voici un fichier test
    Pièce jointe 585550

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Qualiticien
    Inscrit en
    Août 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Qualiticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2019
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Ok ! Super merci beaucoup !

    Le problème venait de mon ordinateur, quand j'ai téléchargé votre fichier, cela ne fonctionnait pas non plus, j'ai donc redémarrer excel puis mon ordinateur pour être sur et ça a fonctionné sur les deux !

    Désolé pour ce temps perdu du coup

    Un grand merci pour l'aide et l'efficacité encore je clôture cette discussion !

    Bonne journée
    Cordialement,
    Axel

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/10/2019, 10h02
  2. [XL-2013] Mise en forme de cellules en fonction d'une textbox
    Par Deb42 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/08/2016, 12h29
  3. reproduire la mise en forme d'une ligne en vba
    Par tico06 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2016, 11h20
  4. Reproduire la mise en forme d'une ligne ajoutée à un tableau
    Par rihab92 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 16/04/2015, 12h47
  5. Réponses: 13
    Dernier message: 28/11/2011, 13h55

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