Passage cellule suivante si précédente vide [Résolu/Fermé]

Signaler
Messages postés
136
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
14 mars 2016
-
Messages postés
136
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
14 mars 2016
-
bonjour
j'ai une feuille excel je dois récupéré des données sur une autre feuille
mais je voudrais récupérer ses données en supprimant les cellules vides et en ne récupérant que les cellules ou il y a des données. et ça sur plusieurs colonnes
je ne sais pas si je suis bien clair???
merci d'avance

6 réponses

Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
38
Bonjour,

Pour cela vous allez avoir besoin de faire une macro en VBA.

La demande est assez simple, mais l'explication relativement floue.

Pourriez-vous s'il vous plaît envoyer un exemple avec https://www.cjoint.com/

Faites un exemple avec une vingtaine de lignes seulement cela suffit et anonymez votre fichier avec des xxx par exemple. Mettez des couleurs afin que l'on sache quelle donnée doit être récupérée et où il faut la mettre.

Cordialement.
Messages postés
136
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
14 mars 2016

bonjour
pour faire plus simple voici le fichier original
si besoin de plus d'infos n'hésitez pas à me contacter
encore merci


http://www.cjoint.com/c/EJrkuloQelG

pour voir si mes idées sont bonnes
merci
Messages postés
16174
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
6 août 2020
3 000
Bonjour,

Avant de penser VBA, penser Excel...

avec une formule matricielle d'après Jacques Boisgontier
http://boisgontierjacques.free.fr/

maquette sur 1 ligne
http://www.cjoint.com/c/EJqifo8PRWE
Messages postés
136
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
14 mars 2016

bonjour
voici un exemple de ce que je souhaiterais faire si cela peut aider à trouver
merci d'avance


http://www.cjoint.com/c/EJrgo7xoRQG
Messages postés
16174
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
6 août 2020
3 000
Bonjour,

D'où l'intérêt d'être clair dès la 1° demande pour nous éviter de recommencer à passer du temps pour essayer de t'aider
alors dis nous combien de lignes (environ) comporte ton tableau: choix entre formules matricielles et VBA
Messages postés
136
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
14 mars 2016
>
Messages postés
16174
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
6 août 2020

mon tableau comporte 38 lignes
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
477
Bonjour à tous,

Un exemple de traitement avec VBA
https://www.cjoint.com/c/EJrhIb12jMG

A+
Messages postés
136
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
14 mars 2016

bonjour
c'est bien ce que tu as fais par contre j'aimerai beaucoup savoir comment on fait
et par contre plutôt que de passer par une liste déroulante je souhaiterais avoir les bl les uns a coté des autres si cela est possible merci d'avance.
Messages postés
136
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
14 mars 2016

bonjour
c'est bien ce que tu as fais par contre j'aimerai beaucoup savoir comment on fait
et par contre plutôt que de passer par une liste déroulante je souhaiterais avoir les bl les uns a coté des autres si cela est possible merci d'avance.
Messages postés
136
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
14 mars 2016

Re,
pour faire plus simple voici le fichier original


http://www.cjoint.com/c/EJrkuloQelG

pour voir si mes idées sont bonnes
merci
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
477
Bonjour,

Au vu de la structure de tes feuilles, il faut oublier le traitement avec un filtre avancé.

Voici une proposition avec une macro.
https://www.cjoint.com/c/EJthIGAjbyG

A+
Messages postés
136
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
14 mars 2016

bonjour
tout d'abord un grand merci c'est génial
alors je vais exagérer
est-ce qu'il est possible de mettre le bouton sur la feuille fab et n'en faire qu'un seul pour tout les bl?
et est-ce que le code est le même si je fais une feuille par clients
peux-tu m'expliquer comment ce code est fait ou c'est trop compliqué??
encore merci
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
477 >
Messages postés
136
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
14 mars 2016

Est-ce qu'il est possible de mettre le bouton sur la feuille fab ?
La procédure peut être appellée depuis n'importe quelle feuille car elle est intégrée à un module indépendant et les références sont explicites.
Le bouton peut donc être coupé et collé sur la feuille "FEUILLE FAB".

et n'en faire qu'un seul pour tout les BL ?

Dans la procédure, tu peux remarquer la boucle
For ColS = 6 To 7
...
Next ColS
C'est cette boucle qui permet de prendre en compte les différents clients.
6 pour la colonne F, soit MONTRICHARD F.O U1
7 pour la colonne G, soit MONTRICHARD F.O U2
Tu peux donc continuer dans la même logique avec les autres clients (For ColS = 6 To 17 pour tout MONTRICHARD par exemple).
Cela suppose évidemment que la trame de base est renseignée dans la feuille "BL".

Est-ce que le code est le même si je fais une feuille par clients ?
Dans ce cas, la boucle client disparait mais la procédure doit être modifiée pour prendre en compte le changement de feuille pour chaque client.

Peux-tu m'expliquer comment ce code est fait ou c'est trop compliqué ?
Je ne connais pas ton niveau de connaissance en informatique, Excel et VBA.
Aussi, je préfère que tu me poses des questions sur les parties de code que tu ne comprends pas.

Pour t'aider, voici le code commenté
Sub Creer_BL()
Dim WsC As Worksheet
Dim DerLigS As Long, LigneS As Long, LigneC As Long
Dim ColS As Integer, ColC As Integer
'l'actualisation de l'écran est désactivée
Application.ScreenUpdating = False
'On indique que la cible est la feuille "BL"
Set WsC = Worksheets("BL")
'On efface les anciennes données dans la feuille cible
WsC.Rows("10:100").ClearContents
'On indique que la source est la feuille "FEUILLE FAB"
With Worksheets("FEUILLE FAB")
'On définit le numéro de la dernière ligne renseignée de la colonne A (les plats)
DerLigS = .Range("A" & Rows.Count).End(xlUp).Row
'On boucle sur les colonnes "Clients"
For ColS = 6 To 7
'On définit la première ligne pour l'ajout dans la feuille cible
LigneC = 10
'On définit le numéro de la colonne "Client" dans la feuille cible
ColC = (ColS - 6) * 3 + 2
'On boucle sur les lignes de la colonne correspondant aux plats (feuille source)
For LigneS = 8 To DerLigS
'Si la cellule est renseignée (et que la valeur est différente de A1 & "")
If .Cells(LigneS, 1) <> "" And .Cells(LigneS, ColS) <> .Cells(2, 1) & "" Then
'On copie le libellé du plat
.Cells(LigneS, 1).Copy
'On colle le format dans la cellule cible (pour conserver la couleur)
WsC.Cells(LigneC, ColC).PasteSpecial (xlPasteFormats)
'On colle la valeur dans la cellule cible
WsC.Cells(LigneC, ColC).PasteSpecial (xlPasteValues)
'On copie le nombre de plats
.Cells(LigneS, ColS).Copy
'On colle le format dans la cellule cible (pour conserver la couleur)
WsC.Cells(LigneC, ColC + 1).PasteSpecial (xlPasteFormats)
'On colle la valeur dans la cellule cible
WsC.Cells(LigneC, ColC + 1).PasteSpecial (xlPasteValues)
'On incrémente la ligne pour l'ajout dans la feuille cible
LigneC = LigneC + 1
End If
Next LigneS
Next ColS
'On annule le mode Copier
Application.CutCopyMode = False
End With
End Sub


A+
Messages postés
136
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
14 mars 2016
>
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016

OUAH !!!!
pour ma connaissance en excel je suis autodidacte
donc je me limite aux fonctions simples
donc VBA pas de connaissances du tout
donc voilà
je vais essayé de bosser avec tout ça et puis j'aimes bien bidouiller même si la bidouille a ses limites
je te retiens au courant de mon avancée ou pas!!!
encore un grand merci
par contre sur mon fichier vois tu des choses que je pourrais améliorer ou simplifier
Messages postés
136
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
14 mars 2016
>
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016

un grand merci cela fonctionne à merveille
Messages postés
136
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
14 mars 2016
>
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016

bonjour Gyrus
ton code est super bien par contre comment faire dans les bl pour ne pas avoir le nom du plat qui s'affiche lorsque la cellule nombre de personnes est vide?
il y a t il une modif à faire dans le code
et la deuxième question comment remettre les lignes supprimées sur feuille fab lorsque je les ai supprimées avec le bouton suppression lignes vides
ci-joint le fichier en question

http://www.cjoint.com/c/EJBoUDQOJjm

merci d'avance