remonter des ligne automatiquement !

  • Initiateur de la discussion Initiateur de la discussion stagiaire
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

stagiaire

XLDnaute Nouveau
Bonjour,

Voila mon permier post sur excel downloads, malgré que je vienne lire les posts depuis quelques semaines! J'ais 2 problemes sur mon tableau Excel!
J'établie un planning durant mon stage ou chaques lignes correspond a un engin en location, les colonnes ont 2 parties, l'une designation (nom, type, ville, adress... ) et la seconde une projection sur 15j de location:

- En clair sur 200 engins a louer, seul une petite partie est utilisé alors j'aimerais que les engins qui ont une note sur la partie des 15j de location se retrouve automatiquement dans les premieres lignes du tableau !

-De plus j'aimerais que ma seconde ligne de tableur soit intégré a la partie "titre" pour pouvoir trier sans qu'elle ne bouge !

Voili voilo, je suis novice en VBA alors si il y a un moyen de le faire simplement sa serai aussi bien sinon bein il faudra un peu m'aiguiller en programmation !

Merci,
Bibi le stagiaire
 

Pièces jointes

Re : remonter des ligne automatiquement !

salut,

pas trouvé plus simple 🙁

mais attend la réponse d expert

en gros ma macro
1) compte le nombre de fois que un camion est utilisé
2) sort dans la feuille 2 par ordre d utilisation les camions

Code:
Sub cartman()

Dim tableau(20) As Integer
Sheets("Feuil1").Select
For i = 3 To 20
    For y = 8 To 18
        If Cells(i, y) <> 0 Then
        cpt = cpt + 1
        End If
    Next y
    tableau(i) = cpt
    cpt = 0
Next i
'on a la tableau avec combien de fois est pris le camion
For j = 3 To 20
    For i = 3 To 20
        If Max < tableau(i) Then
            Max = tableau(i)
            c = i
        End If
    Next i
    If z = c Then
        k = j
        j = 20
    Else
        tableau(c) = -1
        Sheets("Feuil1").Select
        Rows(c).Select
        Selection.Copy
        Sheets("Feuil2").Select
        Rows(j).Select
        ActiveSheet.Paste
    End If
Max = 0
z = c
Next j
z = 1
'on copie ceux qui sont nul a la suite
For i = 3 To 16
    If tableau(i) = 0 Then
        Sheets("Feuil1").Select
        Rows(i).Select
        Selection.Copy
        Sheets("Feuil2").Select
        Rows(k).Select
        ActiveSheet.Paste
        k = k + 1
        tableau(i) = -1
    End If
Next i


End Sub
 

Pièces jointes

Re : remonter des ligne automatiquement !

Merci , testrop

Je trouve l'idée tres bonne, etant novice en macro j'ais essayer de l'adapter a mon tableau malheureusement sans trop de succes ! Malheureusement il me semble que ta macro soit erroné car elle a aussi copier 2 lignes sans location dans le milieu de l'onglet 2.

Peut on utiliser ta methode de façon plus simple ou une formule que je puisse utiliser?!
Y aurait il un moyen avec une fonction simple ( SI ) de copier une ligne qui a des mots marqué dans la zone de location( onglet1 ) vers une autre feuille (onglet2), cette feuille n'affichera alors que les les materielle loué pour plus de visibilité ?

merci

ci-joint le model du tableau 😛
 

Pièces jointes

Dernière édition:
Re : remonter des ligne automatiquement !

EN effet la c est plus simple a faire j ai commenter le code afin que tu puisse l adapter et surtout le comprendre

Tu arrives a le lire le code dans VBA???


Code:
Sub cartman()


'variable poru savoir sur quel ligne de la feuille 2 on copie
'on commence a la ligne 3
j = 3
'on va regarder ligne par ligne si y a des mots si on trouve un mot dans la phase location on va copier la ligne dans la feuille 2
'ligne 3 a 16
Sheets("Feuil1").Select
For i = 3 To 16
'ici par défaut on dit y a pas de mot en mettant mot = false
mot = False
    'colonne 8 a 18
    For y = 8 To 18
        'on regarde si la ligne contient un mot entre la colonne 8 et 18 si oui mot = true
        Sheets("Feuil1").Select
        If Cells(i, y) <> 0 Then
            mot = True
        End If
    Next y
    'si il y a 1 mot dans la ligne i alors mot = true
    If mot = True Then
        Sheets("Feuil1").Select
        Rows(i).Select
        Selection.Copy
        Sheets("Feuil2").Select
        Rows(j).Select
        ActiveSheet.Paste
        'on augmente j pour passer a la ligne suivant quand on copiera la prochaine ligne
        j = j + 1
    End If
Next i
End Sub


PS : dans le fichier que tu m as donné la cellule ligne 3 colonne 8 n'était pas vide donc il a copié la ligne 3.... je sais pas comment t as fais ton fichier mais faut faire attention a ca ou si ca arrive trop souvent faire une autre condition !!!
n hésite pas si tu bloques 😱😱
 

Pièces jointes

Dernière édition:
Re : remonter des ligne automatiquement !

Re- Testrop

Merci cette formule est exactement ce dont j'ais besoin pour voir le materiel louer mais je ne connais VRAIMENT RIEN en VBA les quelques fonctions que j'ais testé n'ont pas été un franc succes !

>> je vien de decouvrir qu'il faut appuyer sur macro pour l'activer ahaha (oui quand je dis que suis naze ... je deconne pas) donc j'ais copier ta formule en modifiant les éléments qui ne convenait pas et :...... SA MARCHE

Felicitation a toi , grand pedagogue du VBA!
Je vais tester la macro et reposterais si j'ais besoin de la paufiner ou juste pour ameliorer le fichier 😀

Merci Enormement, je vais manger dans la sérénité grace a toi !
( je vais suivre tes pas dans le chemin du VBA )

Suistrop tes trop fort !
 
Re : remonter des ligne automatiquement !

Yop me revoila !

La formule est inpeccable mais j'aimerais pouvoir faire quelques ameliorations pour mon planning, j'ais essayer de faire quelques chose et comparant different VBA mais en faite je maitrise quedal :

- j'ais 15j de location qui change de date avec une formules et je voudrais que les locations se decale en fonction de la semaine, ex : j'ais le planning de la semaine en cours et celui de la semaine prochaine et je souhaiterais que les cellules se decalent lorsque je passe a la semaine suivante pour qu'elle devienne la semaine actuelle et libere la prochaine semaine !

je sais pas si c'est tres clair donc, que la location se deplace avec les dates en clair !

enfin serai t'il possible de faire une macro qui archive les location de la semaine ecoulé a la fin de semaine sur une feuille chaque semaine a la suite de l'autre en fonction du nom et du type de materiel loué ?!

Du coup sa a plus vraiment de rapport avec le titre mais comme c'est le même projet :s

Merci mes chers confrère excel
 
Re : remonter des ligne automatiquement !

Salut ! bon week end ?

arf c'est pas clair donc....
j'ais réuploader ton fichier 🙂
Comme tu le voi les jours c'est vendredi dernier puis la semaine en cours, puis la semaine prochaine ! et j'aimerais que les cellules de la semaine ecoulé soit effacer hormis le vendredi, et que les cellules de la semaine prevu devienne la semaine actuelle !
Bref chaque semaine les dates des jours afficher vont changer et je voudrais que la cellules bouge avec la date qui lui correspond ! ( la les cellules marqué en exemple on pas bouger alors que les dates oui !)

que les colonne qui prevoyais la semaine prochaine, recule ! que celle qui était affiché soit effacer(sauf le vendredi ) et que la semaine prochaine soit vide !

Chuis pas sur que se soit plus clair mais bon 🙂

sinon pour le reste sa servirait d'archivé la semaine que j'efface! mais un probleme a la fois !
 

Pièces jointes

Re : remonter des ligne automatiquement !

Simple et pratique !

Je vais essayer d'ecrire en VBA pour rajouter la possibilité de mettre la semaine en cour dans un onglet pour l'archiver ! un bouton 2 en 1 ^_^

J'aimerais si possible qu'il puisse copié la semaine intelligement en copiant les colonnes type, carac et nom avec la semaine actuelle a sa suite ! Le dernier onglet archivra du coup les locations des moi precedant pr faciliter la facturation !

je vais tenter la coup histoire de m'amélioré mais mon degré de reussite m'apparait peu problable!

Merci "testrop" a bientot
 
Re : remonter des ligne automatiquement !

RE 😛

Bon j'ais essayer de faire un mixte des 2 formules sans grand succes la mise a jour ne fonctionne pas si j'essaye de lui incorporé un formule pour qu'elle copie la semaine en cour ds un onglets "histo"

Ma question est la suivante peut on rajouté a la macro "mise a jour" une fonction pour qu'elle copie les ligne en location de la 1er semaine vers le fichier "histo", ou elle les copiera a la suite des autres semaines !

et comment fait on pour que la macro enclencher mette à jour le fichier planning et loué ?

😀
 
Re : remonter des ligne automatiquement !

Le voila avec la macro enregistrer de mise a jour et la macro cartman ^^

en faite l'idéal serait que la macro "mise a jour" qui recule les cellule 1 semaine effectue en meme temps une copie de la "semaine effacé" dans le feuillet Histo avec seulement les colonne type, carac, nom puis la semaine de location effacer avec la date !

Du coup que chaque vendredi en cliquant sur mise a jour : la semaine se decale en fonction de la semaine a venir ( se que la macro fai deja ) mais en plus qu'elle archive la semaine dans un autre onglet, de façon que chake semaine, la semaine supprimer s'additionne a l'autre onglet !

ou alors le faire dans une macro a part dans l'onglet "loué"

comment selectionné les colonnes pour l'archive et que chake archivage s'additionne et n'efface pas la semaine d'avant non plus !

( PS: pourquoi la programmation est toujours en anglais dediou ?! je vous le demande !!)
 
Re : remonter des ligne automatiquement !

re

Apres test de l'équipe charger d'utiliser le logiciel, j'ais eu quelques changement a faire !

- c'est un planning simple sur un mois ou en changeant la date du premier jour du mois tous les autre change ! probleme j'aimerais savoir si il existe une formule pour griser les WE de chaque mois ?

- Enfin je souhaiterai mettre un bouton pour que l'onglet "louer" du mois puisse être copié dans un onglet archive et ou si je rappui le mois prochain, la copie se cale en dessous du moi precedement archiver ( avec une ligne de sauter si possible ^^ )!

Vu que la macro s'effectuera un moi apres il remplace le moi precedement archiver et ne se decale pas vers le bas si les ligne sont occuper:

j'ais tenter d'adapter la formule de "suistrop" sans grand suuces !

Sub kenny()

j = 1

Sheets("archive").Select
For I = 1 To 100

mot = False

For y = 1 To 42

Sheets("planning").Select
If Cells(I, y) <> 0 Then
mot = True
J= J + 3
End If


Next y
If mot = False Then

Sheets(".xls]louer").Select
Rows(I).Select
Selection.Copy
Sheets("archive").Select
Rows(j).Select
ActiveSheet.Paste
End If


End Sub
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour