Effectuer un saut de ligne automatiquement [VBA]
Résolu/Fermé
kimalg
Messages postés
9
Date d'inscription
dimanche 6 août 2017
Statut
Membre
Dernière intervention
9 août 2018
-
6 août 2017 à 14:42
yg_be Messages postés 23416 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 janvier 2025 - 14 août 2017 à 17:29
yg_be Messages postés 23416 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 janvier 2025 - 14 août 2017 à 17:29
A voir également:
- Vba saut de ligne
- Partage de photos en ligne - Guide
- Site de vente en ligne particulier - Guide
- Aller à la ligne excel - Guide
- Comment supprimer une page sur word avec un saut de page ? - Guide
- Apparaitre hors ligne instagram - Guide
6 réponses
Raymond PENTIER
Messages postés
58798
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
4 janvier 2025
17 262
6 août 2017 à 17:48
6 août 2017 à 17:48
Bonjour.
Je n'ai pas bien compris ce que tu veux faire :
Il s'agit de 288 retours à la ligne dans une même cellule ? ce serait assez énorme et incongru ;
ou de 288 lignes de saisies de données ; dans ce cas, une fois saisie la dernière donnée de la ligne 288, tu fais Entrée 2 fois et tu te retrouves à la ligne 290 !
Si ton problème est de compter les lignes, tu insères une colonne avant la colonne A, tu saisis 1 pour la première ligne de ta série (par exemple en A3), dans la cellule suivante tu saisis la formule =A3+1 que tu recopies jusqu'à voir affiché le nombre 288.
Et tu recommences à partir de la cellule A290 ...
Tu peux aussi saisir, en cellule A3, =SI(A2="";1;SI(A2=288;"";A2+1)) et la recopier jusqu'à la dernière ligne de ton tableau ...
Je n'ai pas bien compris ce que tu veux faire :
Il s'agit de 288 retours à la ligne dans une même cellule ? ce serait assez énorme et incongru ;
ou de 288 lignes de saisies de données ; dans ce cas, une fois saisie la dernière donnée de la ligne 288, tu fais Entrée 2 fois et tu te retrouves à la ligne 290 !
Si ton problème est de compter les lignes, tu insères une colonne avant la colonne A, tu saisis 1 pour la première ligne de ta série (par exemple en A3), dans la cellule suivante tu saisis la formule =A3+1 que tu recopies jusqu'à voir affiché le nombre 288.
Et tu recommences à partir de la cellule A290 ...
Tu peux aussi saisir, en cellule A3, =SI(A2="";1;SI(A2=288;"";A2+1)) et la recopier jusqu'à la dernière ligne de ton tableau ...
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
6 août 2017 à 19:01
6 août 2017 à 19:01
Bonjour
Et pour ajouter aux propositions de Raymond
Tu as un fichier avec beaucoup de lignes remplies, tu veux insérer automatiquement une ligne vide toutes les 288 lignes, là, il faut passer par une macro
Cdlmnt
Et pour ajouter aux propositions de Raymond
Tu as un fichier avec beaucoup de lignes remplies, tu veux insérer automatiquement une ligne vide toutes les 288 lignes, là, il faut passer par une macro
Cdlmnt
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
6 août 2017 à 23:21
6 août 2017 à 23:21
Bonjour,
Et pour ajouter aux commentaires de Raymond et de ccm81 (bonjour à vous deux), laisser une ligne vide dans un tableau, c'est pas une bonne idée car ça crée une rupture dans les données et Excel ignore le reste du tableau.
Et pour ajouter aux commentaires de Raymond et de ccm81 (bonjour à vous deux), laisser une ligne vide dans un tableau, c'est pas une bonne idée car ça crée une rupture dans les données et Excel ignore le reste du tableau.
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié le 7 août 2017 à 15:59
Modifié le 7 août 2017 à 15:59
Bonjour,
Bien que je pense que ce ne soit pas une bonne idée, voici une macro qui regroupe les données d'une feuille en blocs de 288 lignes (sans ligne vide) séparés par une ligne vide.
Cordialement
Patrice
Bien que je pense que ce ne soit pas une bonne idée, voici une macro qui regroupe les données d'une feuille en blocs de 288 lignes (sans ligne vide) séparés par une ligne vide.
Sub DécouperTableauEnBlocDe288Lignes() Dim D As Range 'Début Dim V As Range 'Vide Dim T As Range 'Tableau Application.ScreenUpdating = False 'Début du tableau Set D = ActiveSheet.Cells(1, "A") Do 'Tableau Set T = D.CurrentRegion If T.Rows.Count > 288 Then 'Ajouter une ligne vide après la 288ème Set D = D.Offset(288) D.EntireRow.Insert Else 'Ligne vide suivant le tableau Set V = D.End(xlDown).Offset(1) 'Est-ce la fin des données de la feuille ... If ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row < V.Row Then '... Oui : terminer Exit Do Else '... Non : supprimer les lignes vides V.Resize(V.End(xlDown).Row - V.Row).EntireRow.Delete End If Loop Application.ScreenUpdating = True End Sub
Cordialement
Patrice
kimalg
Messages postés
9
Date d'inscription
dimanche 6 août 2017
Statut
Membre
Dernière intervention
9 août 2018
8 août 2017 à 12:35
8 août 2017 à 12:35
Bonjour Patrice, Merci indéfiniment pour votre précieuse aide, le code VBA a bien fonctionné ouf vous m'avez rendu un énorme service je vous suis très reconnaissante.
Respectueuses salutations.
Respectueuses salutations.
yg_be
Messages postés
23416
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 janvier 2025
1 557
13 août 2017 à 17:56
13 août 2017 à 17:56
ne manque-t-il pas un
end if?
victor
>
yg_be
Messages postés
23416
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 janvier 2025
13 août 2017 à 22:55
13 août 2017 à 22:55
Bonsoir yg_be,
Exact : après la ligne #25, pour le Else de la ligne #23 ; le End If de la ligne #26
correspond au Else de la ligne #16 ; kimalg a dû corriger d'elle-même l'erreur
de compilation que ça a dû générer.
Cordialement
Exact : après la ligne #25, pour le Else de la ligne #23 ; le End If de la ligne #26
correspond au Else de la ligne #16 ; kimalg a dû corriger d'elle-même l'erreur
de compilation que ça a dû générer.
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
kimalg
Messages postés
9
Date d'inscription
dimanche 6 août 2017
Statut
Membre
Dernière intervention
9 août 2018
8 août 2017 à 12:35
8 août 2017 à 12:35
un grand MERCI à Patrice33740, votre code VBA marche bien, Merci infiniment pour votre précieuse aide!
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
14 août 2017 à 16:19
14 août 2017 à 16:19
Mets ce post en résolu.
victor
>
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
Modifié le 14 août 2017 à 16:46
Modifié le 14 août 2017 à 16:46
Bonjour Patrice,
Pas déjà en résolu, car il y a eu une suite : insérer une ligne blanche
si la date d'une ligne est différente de celle de la ligne précédente ;
yg_be a donné une solution dans son message de 15:00 :
https://forums.commentcamarche.net/forum/affich-34773732-effectuer-un-saut-de-ligne-automatiquement-vba#12
Tu peux lire la réponse de kimalg à Raymond :
https://forums.commentcamarche.net/forum/affich-34773732-effectuer-un-saut-de-ligne-automatiquement-vba#9
Cordialement
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
>
victor
Modifié le 14 août 2017 à 17:18
Modifié le 14 août 2017 à 17:18
Bonjour Victor,
Je demande à kilmag que de mettre le post en résolu, pour éviter que ce fil continue alors qu'il a été résolu en MP.
Je lui ai précisé que « pour ce genre de problème il aurait été préférable d'ouvrir un post sur le Forum plutôt que passer par MP : ce genre de problème est assez général et il pourrait concerner d'autres personnes ».
J'ai donné à kimalg, il y a 4 jours en MP un solution identique à celle de yg_be (bonjour à lui) qu'il n'a vu qu' avant-hier et qui lui convient parfaitement: https://mon-partage.fr/f/apXwcxHM/
Cordialement
Patrice
Je demande à kilmag que de mettre le post en résolu, pour éviter que ce fil continue alors qu'il a été résolu en MP.
Je lui ai précisé que « pour ce genre de problème il aurait été préférable d'ouvrir un post sur le Forum plutôt que passer par MP : ce genre de problème est assez général et il pourrait concerner d'autres personnes ».
J'ai donné à kimalg, il y a 4 jours en MP un solution identique à celle de yg_be (bonjour à lui) qu'il n'a vu qu' avant-hier et qui lui convient parfaitement: https://mon-partage.fr/f/apXwcxHM/
Cordialement
Patrice
victor
>
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
14 août 2017 à 17:23
14 août 2017 à 17:23
ok, merci pour tes renseignements complémentaires ; donc laissons kimalg
passer ce sujet en résolu : en haut de page, sous le titre du 1er message,
cliquer sur le lien « Marquer comme résolu » => titre du sujet en vert.
passer ce sujet en résolu : en haut de page, sous le titre du 1er message,
cliquer sur le lien « Marquer comme résolu » => titre du sujet en vert.
yg_be
Messages postés
23416
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 janvier 2025
1 557
>
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
14 août 2017 à 17:29
14 août 2017 à 17:29
:-(
ce qui montre bien les désavantages de fournir de l'assistance par MP: encore pire que de travailler sur des doublons.
ce qui montre bien les désavantages de fournir de l'assistance par MP: encore pire que de travailler sur des doublons.
yg_be
Messages postés
23416
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 janvier 2025
Ambassadeur
1 557
14 août 2017 à 15:00
14 août 2017 à 15:00
suggestion pour insérer une ligne blanche à chaque changement de date:
Option Explicit Sub decouperparjour() Dim ligne As Long Dim jour As Date, cejour As Date Dim valeur As Range jour = Int(CDate(ActiveSheet.Cells(1, "A"))) ligne = 2 Do Set valeur = ActiveSheet.Cells(ligne, "A") If Not IsDate(valeur) Then Exit Do Else cejour = Int(CDate(valeur)) If (cejour <> jour) Then jour = cejour ' ajouter une ligne vide avant valeur.EntireRow.Insert ligne = ligne + 1 End If End If ligne = ligne + 1 Loop End Sub
14 août 2017 à 10:27