Compacter un tableau avec VBA
Résolu/Fermé
slimscud
Messages postés
51
Date d'inscription
dimanche 3 avril 2011
Statut
Membre
Dernière intervention
13 janvier 2020
-
3 juin 2014 à 14:44
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 6 juin 2014 à 13:19
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 6 juin 2014 à 13:19
A voir également:
- Compacter un tableau avec VBA
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Trier un tableau excel - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
6 réponses
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
5 juin 2014 à 16:51
5 juin 2014 à 16:51
Bonjour,
Une macro qui devrait mettre moins de 30 min : https://www.cjoint.com/?DFfqY3OSYLI
Comme apparemment tu as plusieurs feuilles concernées c'est une macro unique dans Thisworkbook.
Elle se lance par un double-clic en J2. Ajoute un contrôle du nom des feuilles, qu'elle ne se lance que sur les feuilles concernées.
eric
Une macro qui devrait mettre moins de 30 min : https://www.cjoint.com/?DFfqY3OSYLI
Comme apparemment tu as plusieurs feuilles concernées c'est une macro unique dans Thisworkbook.
Elle se lance par un double-clic en J2. Ajoute un contrôle du nom des feuilles, qu'elle ne se lance que sur les feuilles concernées.
eric
ccm81
Messages postés
10900
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
2 novembre 2024
2 425
Modifié par ccm81 le 3/06/2014 à 15:54
Modifié par ccm81 le 3/06/2014 à 15:54
Bonjour
Pas très clair.
Tu peux joindre un exemple bidon (avec la même structure et quelques lignes) de ce que tu veux obtenir, au format excel 2003 sur cjoint.com et mets le lien obtenu à ton prochain message
Cdlmnt
Pas très clair.
Tu peux joindre un exemple bidon (avec la même structure et quelques lignes) de ce que tu veux obtenir, au format excel 2003 sur cjoint.com et mets le lien obtenu à ton prochain message
Cdlmnt
slimscud
Messages postés
51
Date d'inscription
dimanche 3 avril 2011
Statut
Membre
Dernière intervention
13 janvier 2020
4 juin 2014 à 08:44
4 juin 2014 à 08:44
Bonjour désole de ne pas avoir répondu plus tot je n'etais plus sur omn lieu de travail et je n'avais plus excel sous la main
https://www.cjoint.com/?DFeiPkaP35X
voila en gros ce que je veut qu'un bouton me fasse
https://www.cjoint.com/?DFeiPkaP35X
voila en gros ce que je veut qu'un bouton me fasse
ccm81
Messages postés
10900
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
2 novembre 2024
2 425
Modifié par ccm81 le 4/06/2014 à 16:37
Modifié par ccm81 le 4/06/2014 à 16:37
Désolé, mais je t'ai demandé un fichier au format excel 2003 (fichier/enregistrer sous/Type/ ... xls)
Bonjour
il faut faire 2 boucle
Sub test()
Nlig = Range("B" & Rows.Count).End(xlUp).Row
For L = 3 To Nlig
Col = 10
For C = 3 To 7
If Cells(L, C).Value <> "" Then
Cells(L, Col).Value = Cells(L, C).Value
Col = Col + 1
End If
Next
Next
End Sub
A+
Maurice
il faut faire 2 boucle
Sub test()
Nlig = Range("B" & Rows.Count).End(xlUp).Row
For L = 3 To Nlig
Col = 10
For C = 3 To 7
If Cells(L, C).Value <> "" Then
Cells(L, Col).Value = Cells(L, C).Value
Col = Col + 1
End If
Next
Next
End Sub
A+
Maurice
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ccm81
Messages postés
10900
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
2 novembre 2024
2 425
4 juin 2014 à 18:08
4 juin 2014 à 18:08
Bonjour
A toi de modifier les valeurs des constantes selon ta configuration
Cdlmnt
A toi de modifier les valeurs des constantes selon ta configuration
Option Explicit
Const NF = "Feuil1"
Const lideb = 1
Const codeb = 1
Public Sub Kompacte()
Dim lifin As Long, li As Long, co As Long, cofin As Long, coco As Long
With Sheets(NF)
lifin = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
For li = lideb To lifin
cofin = .Cells(li, Columns.Count).End(xlToLeft).Column
coco = codeb
For co = codeb To cofin
If .Cells(li, co) <> "" Then
.Cells(li, coco) = .Cells(li, co)
.Cells(li, co) = ""
coco = coco + 1
End If
Next co
Next li
End With
End Sub
Cdlmnt
slimscud
Messages postés
51
Date d'inscription
dimanche 3 avril 2011
Statut
Membre
Dernière intervention
13 janvier 2020
5 juin 2014 à 14:01
5 juin 2014 à 14:01
Ok merci je vais essayer ca tout de suite.
Désole pour le fichier excel j'ai pas trop compris pourquoi il me la pas mis en 2003 ce lien devrait etre bon.
https://www.cjoint.com/?DFfoaBkTrPE
Désole pour le fichier excel j'ai pas trop compris pourquoi il me la pas mis en 2003 ce lien devrait etre bon.
https://www.cjoint.com/?DFfoaBkTrPE
slimscud
Messages postés
51
Date d'inscription
dimanche 3 avril 2011
Statut
Membre
Dernière intervention
13 janvier 2020
5 juin 2014 à 14:56
5 juin 2014 à 14:56
Les Vba ne sont pas du tout comme ce a quoi je m'attendais enfait peu etre que si j'expliquais un peu mieu ce que je veux ca serait mieu
je voudrais que si la case de gauche est vide il me decale ma valeure dedan ceci pour 20 lignes et 30 colonnes
j'ai utiliser un copier coller si avec une boucle je met presque 30 minutes a tout decaler si il y a beaucoup de valeures
je voudrais que si la case de gauche est vide il me decale ma valeure dedan ceci pour 20 lignes et 30 colonnes
j'ai utiliser un copier coller si avec une boucle je met presque 30 minutes a tout decaler si il y a beaucoup de valeures
slimscud
Messages postés
51
Date d'inscription
dimanche 3 avril 2011
Statut
Membre
Dernière intervention
13 janvier 2020
6 juin 2014 à 09:33
6 juin 2014 à 09:33
C'est exactement ce qu'il me faut !
il est instantané
par contre j'aimerais qi'il soit sur un bouton comment j'ajoute la macro au bouton?
et pourquoi la colonne S n'est pas decalée ?
il est instantané
par contre j'aimerais qi'il soit sur un bouton comment j'ajoute la macro au bouton?
et pourquoi la colonne S n'est pas decalée ?
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
Modifié par eriiic le 6/06/2014 à 13:19
Modifié par eriiic le 6/06/2014 à 13:19
Bonjouir,
pourquoi la colonne S n'est pas decalée ?
Erreur de ma part, corrigé
par contre j'aimerais qi'il soit sur un bouton
Si tu préfères, dans ce cas il faudra mettre le code sur chaque bouton :
eric
pourquoi la colonne S n'est pas decalée ?
Erreur de ma part, corrigé
par contre j'aimerais qi'il soit sur un bouton
Si tu préfères, dans ce cas il faudra mettre le code sur chaque bouton :
Dim pl As Variant, lig As Long, col As Long, col2 As Long, i As Long Const plage As String = "B5:S34" pl = Range(plage).Value If Target.Address = "$J$2" Then Cancel = True For lig = 1 To UBound(pl, 1) For col = 1 To UBound(pl, 2) If pl(lig, col) = "" Then col2 = col Do col2 = col2 + 1 If col2 > UBound(pl, 2) Then Exit For Loop Until pl(lig, col2) <> "" i = 0 For col2 = col2 To UBound(pl, 2) pl(lig, col + i) = pl(lig, col2) pl(lig, col2) = "" i = i + 1 Next col2 End If Next col Next lig Range(plage) = pl End If
eric