Répéter une cellule X fois selon la valeur d'une autre cellule (VBA) Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
k
kenjeyy
Jeune membre
Jeune membre
Messages : 11
Inscrit le : 4 février 2019
Version d'Excel : 2016 FR

Message par kenjeyy » 19 février 2019, 09:45

Bonjour à tous,

Je travaille actuellement sur un fichier de gestion de flotte pour ma boite. J'essaye de réaliser actuellement quelque chose mais je me heurte aux limites des formules. J'imagine que le VBA est préféré pour l'opération que je souhaite faire, langage que je ne maîtrise absolument pas.

J'ai ajouté le fichier pour une meilleure compréhension.

Tous les jours, j'importe un fichier CSV dans la cellule C1, feuille "Import".

Dans cette feuille, chaque ligne représente un véhicule. Par exemple pour la première ligne, j'ai l'immatriculation du véhicule (F2), le parking sur lequel il est affecté (C2), ainsi que des infos sur ce parking comme le nombre de places souscrites (D2), et le nombre de places actuellement occupées (E2).

Dans la feuille "Dashboard", colonne A, je souhaiterais répéter chaque parking (Import!colonne C) autant de fois qu'il y a de places (soit la valeur en Import!D2). Il faut que je vois également comment éviter les doublons sans pour autant toucher au CSV.

Ainsi, si j'ai 5 places en parking "Arcueil - La Vache Noire" pour seulement 4 places occupées, le dashboard doit printer ceci :
Arcueil - La Vache Noire | Arcueil - La Vache Noire1 | XX-XXX-XX
Arcueil - La Vache Noire | Arcueil - La Vache Noire2 | XX-XXX-XX
Arcueil - La Vache Noire | Arcueil - La Vache Noire3 | XX-XXX-XX
Arcueil - La Vache Noire | Arcueil - La Vache Noire4 | XX-XXX-XX
Arcueil - La Vache Noire | Arcueil - La Vache Noire5 |
L'objectif étant d'avoir dans "dashboard", une ligne par place de parking et de voir facilement celles qui ne sont pas occupées.

Si vous pouvez me donner quelques pistes d'améliorations ::(

Merci par avance et bonne journée à vous,
DASH_exemple.xlsm
(855.1 Kio) Téléchargé 5 fois
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 7'945
Appréciations reçues : 240
Inscrit le : 16 juin 2013
Version d'Excel : 2013 UK Windows 10

Message par h2so4 » 19 février 2019, 11:04

bonjour,

une proposition via une macro
Sub aargh()
    Dim parking()
    Set ws = Sheets("dashboard")
    ws.Range("D2:D100000").Clear
    With Sheets("import")
        dl = .Cells(Rows.Count, "c").End(xlUp).Row
        ptr = -1
        curpar = ""
        For i = 2 To dl
            If curpar <> .Cells(i, "c") Then
                If i > 2 Then
                    pd = .Cells(i - 1, "D")
                    pu = .Cells(i - 1, "E")
                    For j = pu + 1 To pd
                        ptr = ptr + 1
                        ReDim Preserve parking(ptr)
                        parking(ptr) = curpar & j
                    Next j
                End If
                curpar = .Cells(i, "c")
            End If
            ptr = ptr + 1
            ReDim Preserve parking(ptr)
            parking(ptr) = .Cells(i, "A")
        Next i
        ws.Range("D2").Resize(ptr + 1) = Application.Transpose(parking)
    End With
End Sub
Avatar du membre
Ausecour
Membre impliqué
Membre impliqué
Messages : 2'398
Appréciations reçues : 262
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 19 février 2019, 11:39

Bonjour,

En fait la macro que tu demandes, c'est juste une macro de recopie qui insère des lignes vides quand nécessaire, je t'ai fait une macro de test qui t'exporte correctement les 5 premières colonnes suivant ce que tu souhaites:
Copie de DASH_exemple.xlsm
(939.22 Kio) Téléchargé 8 fois
Pour la gestion des doublons, si par exemple tu as les infos d'un parking ligne 1 à 5, puis 30 à 32, seules les informations lignes 1 à 5 vont être prises, les premières que rencontre le programme, qui s'exécute du haut vers le bas.

Bonjour h2so4 (°v°)°
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté :bien:
"100% des gagnants auront tenté leur chance" :trfl:
k
kenjeyy
Jeune membre
Jeune membre
Messages : 11
Inscrit le : 4 février 2019
Version d'Excel : 2016 FR

Message par kenjeyy » 20 février 2019, 10:01

Bonjour à vous,

Merci beaucoup pour votre aide !

@h2so4 : Malheureusement j'ai une erreur "Incompatibilité de type (Erreur 13)" lorsque j'essaye d'éxécuter ton code. J'ai affecté la macro à un bouton. IMAGE

@Ausecour : C'est exactement ça ! Je viens de tester ta macro et ça fonctionne niquel ! Merci merci merci beaucoup !!
Juste un point : Pour les parkings contenant le mot "Garage" (ex : "Z - Garage - Livraison"; "Z - Garage - Restitution"), ce sont des garages fictifs sur lequel je n'ai pas besoin d'afficher une ligne par place.
Comment pourrais-je faire pour que le code ne tienne pas compte de ces lignes, et qu'il affiche directement, dans la colonne B, une ligne par véhicule et non pas une ligne par place ?

Bonne journée,
Avatar du membre
Ausecour
Membre impliqué
Membre impliqué
Messages : 2'398
Appréciations reçues : 262
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 20 février 2019, 10:14

Bonjour,

Merci pour ce retour, j'ai modifié un peu le programme que je t'avais fournis pour que les lignes qui contiennent "garage" ne créent pas de lignes en plus, et j'ai regardé le résultat du test, je n'avais aucune ligne contenant garage de vide, et il y avait toujours des lignes vides bien entendu.

Je te transmets le fichier modifié:
Copie de DASH_exemple.xlsm
(939.71 Kio) Téléchargé 3 fois
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté :bien:
"100% des gagnants auront tenté leur chance" :trfl:
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 7'945
Appréciations reçues : 240
Inscrit le : 16 juin 2013
Version d'Excel : 2013 UK Windows 10

Message par h2so4 » 20 février 2019, 11:32

bonjour,
@h2so4 : Malheureusement j'ai une erreur "Incompatibilité de type (Erreur 13)" lorsque j'essaye d'éxécuter ton code. J'ai affecté la macro à un bouton. IMAGE
j'ai testé la macro sur le fichier que tu as donné, elle fonctionne. c'est que ton fichier réel est différent, soit de par sa structure soit de par le type de données que certaines colonnes contiennent (ici, l'erreur est dûe au fait que la colonne nombre de places disponibles et/ou places occupées ne contient pas un nombre dans une ligne >2 ).

mais tu as une solution de la part d'ausecour qui fonctionne donc tout est pour le mieux dans le meilleur des mondes.
k
kenjeyy
Jeune membre
Jeune membre
Messages : 11
Inscrit le : 4 février 2019
Version d'Excel : 2016 FR

Message par kenjeyy » 20 février 2019, 16:51

Ausecour a écrit :
20 février 2019, 10:14
Bonjour,

Merci pour ce retour, j'ai modifié un peu le programme que je t'avais fournis pour que les lignes qui contiennent "garage" ne créent pas de lignes en plus, et j'ai regardé le résultat du test, je n'avais aucune ligne contenant garage de vide, et il y avait toujours des lignes vides bien entendu.

Je te transmets le fichier modifié:
Copie de DASH_exemple.xlsm
Merci infiniment, c'est exactement ce que je souhaitais et cela fonctionne parfaitement !!

Cela donne envie d'apprendre le VBA vu ce qu'on peut faire avec... :mrgreen:

Merci encore !

@h2so4 : Effectivement, après avoir testé l'erreur venait de mon côté, désolé. Merci beaucoup malgré tout pour ton aide :D
Avatar du membre
Ausecour
Membre impliqué
Membre impliqué
Messages : 2'398
Appréciations reçues : 262
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 21 février 2019, 08:14

Bonjour,

Excel permet déjà plein de choses, mais VBA donne aussi beaucoup de possibilités oui :) Si tu souhaites apprendre un peu le langage VBA, tu trouveras des cours sur ce site, et il y a également de nombreuses informations sur developpez.com

Bonne continuation (°v°)°
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté :bien:
"100% des gagnants auront tenté leur chance" :trfl:
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message