Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

macro rajoutant une ligne sous la case selectionnée

  • Initiateur de la discussion Initiateur de la discussion quentinp38
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Q

quentinp38

Guest
bonjour,
je suis nouveau sur ce forum, j aurais besoin d'aide.
J ai un tableau ou je recueille des problèmes/ actions pour les résoudre.
Mon soucis, c'est que pour un problème je peux avoir plusieurs actions et je ne veux pas mettre toutes les actions dans la même cellule donc je voudrais avoir un bouton (avec une macro derriere) qui me permette de rajouter une ligne en dessous d'une case selectionnée (pour créer une nouvelle action) en fusionnant les premieres colonnes communes. Exemple dans le fichier joint, en jaune ce que je veux avoir en ayant au debut selectionner la case H4 puis cliquer sur le bouton.

merci
 

Pièces jointes

Re : macro rajoutant une ligne sous la case selectionnée

Bonjour et bienvenu sur le forum QuentinP38,

quentinp38 à dit:
qui me permette de rajouter une ligne en dessous d'une case selectionnée (pour créer une nouvelle action) en fusionnant les premieres colonnes communes.

quentinp38 à dit:
Exemple dans le fichier joint, en jaune ce que je veux avoir en ayant au debut selectionner la case H4 puis cliquer sur le bouton

Ton exemple contredit ce que tu dis plus haut!

Dans ton exemple, en sélectionnant H4, si on rajoute 3 lignes (et non pas une) pour arriver au résultat demandé, ce n'est pas en dessous de H4 mais entre H3 et H4 qu'il faut rajouter les 3 fameuses lignes.

Regarde le fichier ci-joint et dis nous ce que tu en penses.

A+
 

Pièces jointes

Re : macro rajoutant une ligne sous la case selectionnée

bonjour excel-lent,
tu as raison mon exemple n 'est pas clair car j'ai mis déjà ce que je voulais. Dans ton fichier, il y a déjà peu de ce que je veux, j ai détaillé au maximum ce que je veux en esperant que cela soit plus clair
 

Pièces jointes

Re : macro rajoutant une ligne sous la case selectionnée

Hello QuentinP38

Dans ce cas, le fichier ci-joint te conviendra bien mieux.

Pour information :
-> j'ai figé les 2 premières lignes, ainsi le bouton pour activer la macro sera toujours visible, quelque soit la ligne où tu sois.
-> j'ai bloqué à 4 incidents, comme indiqué dans ton exemple (si tu en as plus, la macro va planter).

Bon test

A+
 

Pièces jointes

Re : macro rajoutant une ligne sous la case selectionnée

Nikel merci bcp, par contre j ai remarqué deux pb, on ne peut pas rajouter d'action si on se trouve sur la derniere ligne remplie (dans notre cas "test 3"), comment peux t on faire pour mettre un maxi de 10 actions.
merci de ton aide.
 
Re : macro rajoutant une ligne sous la case selectionnée

super , je pense que tu as fait le tours de tous les cas, maintenant il faut que je retranscrit dans mon vrai fichier, j essayerai demain au taf, merci bcp en tout cas de ton aide§.
Just une derniere question dans le code, à quoi sert la boucle ci dessous
For i = 1 To 4
With Selection.Borders(i)
.LineStyle = xlContinuous
End With
Next i

A+
 
Re : macro rajoutant une ligne sous la case selectionnée

Salut Quentinp38,

Rien de mieux qu'un cas concret simple.

Utilise l'enregistreur de macro :
-> "outils" / "macro" / "nouvelle macro" / Cliquer sur Ok

L'enregistreur de macro est en marche. Excel enregistre maintenant tout ce que tu fais et le traduit en VBA.

-> sélectionne les cellules E10 à G14
-> clic sur le bouton comme indiqué dans sur l'image ci-jointe

Tu peux maintenant arrêter la macro :
-> "outils" / "macro" / "arrêter l'enregistrement"

Si tu regarde le code, tu y verras ceci :
Code:
Sub macro1()
    Range("E10:G14").Select
[COLOR="Blue"]    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone[/COLOR]
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
[COLOR="Blue"]        .Weight = xlThin
        .ColorIndex = xlAutomatic[/COLOR]
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
[COLOR="Blue"]        .Weight = xlThin
        .ColorIndex = xlAutomatic[/COLOR]
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
[COLOR="Blue"]        .Weight = xlThin
        .ColorIndex = xlAutomatic[/COLOR]
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
[COLOR="Blue"]        .Weight = xlThin
        .ColorIndex = xlAutomatic[/COLOR]
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
[COLOR="Blue"]        .Weight = xlThin
        .ColorIndex = xlAutomatic[/COLOR]
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
[COLOR="Blue"]        .Weight = xlThin
        .ColorIndex = xlAutomatic[/COLOR]
    End With
End Sub

Comme tu le sais peut-être, Excel met plein de trucs inutiles. Une fois les lignes inutiles supprimées (lignes en bleu), tu obtiens ceci :
Code:
Sub macro1()
    Range("E12:G19").Select
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
    End With
End Sub

Comme tu peux le remarquer, c'est un peu répétitif et encore un peu long!

Ben pour éviter toutes ces répétitions inutiles, on cré une boucle pour raccourcir tout cela :
Code:
Sub macro1()
  Range("E12:G19").Select
    For i = 1 To 4
       With Selection.Borders(i)
             .LineStyle = xlContinuous
       End With
    Next i
End Sub

Tu en conviendras, c'est quand même mieux que le tout premier code, celui donné par excel? Pourtant ces deux codes donnent le même résultat (ainsi que le code intermédiaire évidement).

Bon test

A+
 

Pièces jointes

  • bordure.jpg
    22.5 KB · Affichages: 82
Dernière édition:
Re : macro rajoutant une ligne sous la case selectionnée

La mise en application dans mon fichier final n est pas si facile que je pensais:
je te mets mon fichier de travail et voila les problèmes que je rencontre:
1) lorsque je rajoute une action je perds la mise en forme avec les traits gras en la categorie PDCA.
2) en colonne Z, j ai l avancement des actions (suivant certaines conditions) qui ne marche que sur la premiere ligne (1er action), lorsque j ai plusieurs actions pour un meme pb ca ne marche pas.
Cette avancement ( si imbriqué seul facon que j ai trouvé de faire) varie selon le choix dans les colonnes C, O et W puis ensuite est calculé selon le remplissage de certaines cellules.
Cette avancement n'apparait pas non plus automatiquement si je créé une nouvelle action


3) J aimerais avoir en AA le nombre action lorsque plusieurs ligne /Pb,
4) en AB, avoir la moyenne des indicateurs avancements pour un même pb.

5) pourquoi lorsque je filtre par n° de pb exemple pb n°1, je n ai que la premiere action et pas l'ensemble fusionné.

6) J ai des points qui vont etre confidentiels est ce qu'il existe un moyen pour faire apparaitre des points en rentrer un mots de passe ou quelques choses comme ca


merci d'avance

je ne peux pas mettre mon fichier depasse 48ko, est ce que je peux te l envoyer
 
Re : macro rajoutant une ligne sous la case selectionnée

Bonsoir Quentinp38,

Le plus simple c'est de décortiquer la macro, la comprendre pour savoir ce qu'elle fait exactement, pour pouvoir ainsi l'adapter 😉

Qu'elle autre point de la macro n'as-tu pas compris?

quentinp38 à dit:
1) lorsque je rajoute une action je perds la mise en forme avec les traits gras en la categorie PDCA.

C'est quoi la catégorie "PDCA"???

Dans la macro on lui demande de faire des traits d'épaisseur standard : "fin" c'est donc normal que tu perde tes traits gras 😉

Si tu veux un trait un peu plus épais (de partout), il te suffit de rajouter la ligne suivante :
Code:
        .Weight = xlMedium

dans la macro précédente, juste en dessous de la ligne :
Code:
        .LineStyle = xlContinuous

Pour un trait BEAUCOUP plus épais (de partout), il faut mettre la ligne suivante :
Code:
        .Weight = xlThick


C'est normal! Dans ton explication et tes différents fichiers exemple tu demande de rajouter une(des) ligne(s) - sous entendu vide! Et c'est tout. Non???

Donc forcément, les formules, et/ou valeurs des lignes supérieurs ne sont pas reprisent dans la(les) ligne(s) nouvellement rajoutée(s).

Si tu veux que cela se fasse, il faut le rajouter dans la macro. Excel se borne de faire ce qu'on lui demande de faire. Ci joint le même fichier que précédemment, avec la macro commenté.

quentinp38 à dit:
3) J aimerais avoir en AA le nombre action lorsque plusieurs ligne /Pb,

Et oooooo, c'est bien gentil, mais je ne suis pas là pour faire tout le boulot!!!!

De plus, c'est moins pédagogique et tu ne progressera pas ou peu. C'est dommage, car c'est le but premier de ce forum.

L'idéal :
1/ essayer de comprendre la macro fourni, te permettant ainsi de l'adapter à ton fichier.
2/ seulement à ce moment là, et pas avant, compliquer la macro en lui rajoutant des fonctionnalités : trait plus épais, l'ajout d'une cellule "nombre action".
3/ le plus simple est d'essayer de faire une macro à part qui ne fait que ça (pour cela l'enregistreur de macro est très pratique). Puis une fois réussi et la macro ainsi obtenu comprise, essayer de l'imbriquer dans la précédente.

quentinp38 à dit:
4) en AB, avoir la moyenne des indicateurs avancements pour un même pb.
Idem que pour la question 3. Essaye de faire une macro autonome, qui fait que cela. Et en cas de soucis, montre nous ta macro et dis nous les symptômes. A ce moment là on pourras-t'aider.

quentinp38 à dit:
5) pourquoi lorsque je filtre par n° de pb exemple pb n°1, je n ai que la premiere action et pas l'ensemble fusionné.

Les filtres détestes les cellules fusionnées, c'est pourquoi on n'utilise ce gadget QUE pour faire joli. Dés qu'on fait un tableau complexe, on laisse tomber ce jouet.

quentinp38 à dit:
6) J ai des points qui vont etre confidentiels est ce qu'il existe un moyen pour faire apparaitre des points en rentrer un mots de passe ou quelques choses comme ca

Oui.

La solution la plus simple est d'écrire tes données dans une colonne masquée et de protéger ta feuille par un mot de passe ("Outils"/"Protection"/"Protéger la feuille").

Ainsi, ceux qui n'auront pas le mot de passe ne pourront pas voir tes données sensibles, ni les écraser tes, ni en rajouter, car ils ne verront pas la fameuse colonne et ne pourront la faire apparaître.

(après forcément, après quelques recherche sur la toile, n'importe qui d'un peu curieux et motivé pourra contourner ceci. Idem pour les solutions plus complexe)

quentinp38 à dit:
je ne peux pas mettre mon fichier depasse 48ko, est ce que je peux te l envoyer

Ce n'est pas dans la politique du forum. Car si une autre personne a le même soucis que toi, il ne verra que la réponse (et pas la question). Donc il sera obligé de reposer la même question! (et en plus sans le savoir) 🙁

Bonne soirée

Cordialement
 

Pièces jointes

Dernière édition:
Re : macro rajoutant une ligne sous la case selectionnée

Bonjour,

je n 'arrive pas à calculer mes nb d'action pour un problème et la moyenne dans la cellule fusionner correspondant à nb action et moyenne, quand plus de 2 valeurs faux , voir dans le fichier partie MOYENNE ET NB vALUER
comment mettre en automatique lors d'une création d'un nouveau pb M et N.

merci
 

Pièces jointes

Dernière modification par un modérateur:
Re : macro rajoutant une ligne sous la case selectionnée

Bonsoir QuentinP38,

quentinp38 à dit:
petit pb pour faire le formule nb valeur ;

Range("AA" & LigneDébut & ":AA" & LigneFin).Select
Ecart = LigneFin - LigneDébut
ActiveCell.FormulaR1C1 = "=COUNTA(RC[-26]:R["&Ecart&"]C[-26])"

Je ne maîtrise pas trop les "...Formula...", mais as-tu essayer en mettant un espace avant et après les signes "&" ? Je ne peux te dire si cela fonctionne en situation réel, mais en tout cas Excel préfère.

Code:
ActiveCell.FormulaR1C1 = "=COUNTA(RC[-26]:R[" & Ecart & "]C[-26])"

quentinp38 à dit:
pour la moyenne:

Range("AB" & LigneDébut & ":AB" & LigneFin).Select
Ecart = LigneFin - LigneDébut
ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-2]:R[["&Ecart&"]C[-2])"

Essaye ainsi pour voir :
Code:
Range("AB" & LigneDébut & ":AB" & LigneFin).Select
Ecart = LigneFin - LigneDébut
ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-2]:R[" & Ecart & "]C[-2])"

Bref, rajouter les fameux espaces et enlever le crochet en trop.

Alors? Ca donne quoi sur ton fichier?

A te lire

Cordialement

Edition : le temps de valider mon post, et je constate qu'entre temps tu as changé complétement ton post et rajouté une pièce jointe 8)

Je te laisse essayer ma solution sur ton fichier exemple et/ou réel et dis nous?!?
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

A
Réponses
12
Affichages
2 K
AnjyD
A
M
  • Question Question
Réponses
8
Affichages
3 K
C
Réponses
4
Affichages
1 K
cecenico
C
T
Réponses
3
Affichages
3 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…