Passage cellule suivante si précédente vide

Résolu
pascal3110 Messages postés 136 Date d'inscription   Statut Membre Dernière intervention   -  
pascal3110 Messages postés 136 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

6 réponses

Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
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.
0
pascal3110 Messages postés 136 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
0
pascal3110 Messages postés 136 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour
voici un exemple de ce que je souhaiterais faire si cela peut aider à trouver
merci d'avance


http://www.cjoint.com/c/EJrgo7xoRQG
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
0
pascal3110 Messages postés 136 Date d'inscription   Statut Membre Dernière intervention   > michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention  
 
mon tableau comporte 38 lignes
0
Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526
 
Bonjour à tous,

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

A+
0
pascal3110 Messages postés 136 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
pascal3110 Messages postés 136 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pascal3110 Messages postés 136 Date d'inscription   Statut Membre Dernière intervention  
 
Re,
pour faire plus simple voici le fichier original


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

pour voir si mes idées sont bonnes
merci
0
Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526
 
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+
0
pascal3110 Messages postés 136 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526 > pascal3110 Messages postés 136 Date d'inscription   Statut Membre Dernière intervention  
 
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+
0
pascal3110 Messages postés 136 Date d'inscription   Statut Membre Dernière intervention   > Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
pascal3110 Messages postés 136 Date d'inscription   Statut Membre Dernière intervention   > Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention  
 
un grand merci cela fonctionne à merveille
0
pascal3110 Messages postés 136 Date d'inscription   Statut Membre Dernière intervention   > Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention  
 
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
0