Macro VBA insertion ligne sous conditions colonnes

Fermé
Queen_Margot Messages postés 3 Date d'inscription lundi 15 mai 2017 Statut Membre Dernière intervention 23 mai 2017 - Modifié le 15 mai 2017 à 19:03
titeufdu89 Messages postés 375 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 - 23 mai 2017 à 09:45
Bonjour,

Toutes mes excuses si la question a déjà été posée, mais après plusieurs heures passées sur les forums, je n'ai pas réussi à trouver la solution à mon problème.

Alors voilà, dans le fichier Excel joint la feuille "Synthèse" est alimentée par un macro qui copie / colle du texte d'une autre feuille à partir de la cellule C14. Jusque là tout va bien.

J'aurais maintenant besoin d'insérer des lignes vierges entre chaque question (i.e. en fonction de la colonne C si celle-ci est non vide et à partir de la ligne 14 seulement). Dans mon fichier j'ai 10 questions mais je peux en avoir 1 comme 100.

Sauriez-vous m'aider ?

Par avance merci à vous de votre aide,

Cordialement,

Ci-après le lien vers le fichier : https://wetransfer.com/downloads/e0b8a6cf29e2378ee9dd0a271ea63da820170515170215/f1489444fb28d21941d3059acb4436ee20170515170215/a36546

3 réponses

titeufdu89 Messages postés 375 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 38
20 mai 2017 à 09:47
Bonjour,

Je ne parviens pas à ouvrir ton fichier donc je te joins un bout de code qui devrait régler ton problème.
Colle ce colle dans visual basic, relie-le a un bouton d'exécution sur la page en question et ça devrait le faire ;-)

Bonne journée

Jc


Sub Ajout_ligne()
Dim i As Integer

'Permet de ne pas voir la macro s'effectuer, elle affiche juste le résultat final
Application.ScreenUpdating = False

'la macro s'effectuera sur la feuille activée de ton fichier excel
With ThisWorkbook.ActiveSheet

'Pour chaque ligne de ton fichier de la ligne 14 à la fin de ton document
For i = .Range("A" & .Rows.Count).End(xlUp).Row To 14 Step -1
'Si la colonne C est non vide
If .Range("C" & i).Value <> "" Then
'On selection la ligne de dessous et on insert un ligne au dessus
.Rows(i + 1).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If
Next i
End With

End Sub

0
Queen_Margot Messages postés 3 Date d'inscription lundi 15 mai 2017 Statut Membre Dernière intervention 23 mai 2017
23 mai 2017 à 09:02
Bonjour,

Merci beaucoup pour ce retour aussi rapide.
J'ai bien inséré le code dans un module mais cela ne fonctionne pas lorsque j'exécute la macro. Est-ce lié au test sur la colonne A ou C ?
Le lien de téléchargement vers le fichier avec la macro est indiqué juste en dessous.

Cordialement,
0