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:
Excel si cellule vide alors cellule suivante
Formule excel pour passer à la ligne suivante - Meilleures réponses
Vba si cellule vide passer à la suivante - Meilleures réponses
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.
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
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.
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.
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
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
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
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
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