Petit soucis

Bonjour

J'ai 22000 ligne à déplacer j'aimerais éviter de le faire a la main (ce qui prendrait beaucoup de temps) , j'ai commencer a faire un programme pour déplacer mes ligne ( en sachant que j'ai 1 ligne sur 5 a déplacer ) mais je suis bloqué dans mon programme car ce n'est pas mon langage habituel (j'utilise plus du C++) pourriez vous m'aider ?

Merci d'avance a ceux qui pourront m'aider

programme

Salut Brenavia,

Si possible, joins ton fichier (bouton vert "Ajouter des fichiers" sous la fenêtre de message) et, si tu veux "coller" ton code, utilise la balise "</>" au-dessus, cette fois, de la fenêtre de message.

Ce sera TOUJOURS plus facile et rapide pour nous !

A+

Désolé pour des question de confidentialité je ne peux pas te donner le vrais document mais en voila une copie test

5test.ods (2.59 Ko)

Salut Brenavia,

effectivement, ton fichier est vachement confidentiel et fonctionnel !

bon, ce que j'ai compris :

  • tu dois, selon ton code, copier 1 cellule sur 5 (à partir de [A5]) et non une ligne vers la colonne [H:H] en commençant par [H1] ;
  • tu effaces [A5] et suites.

Voici toujours un premier jet à améliorer selon précisions ultérieures.

Un double-clic démarre la macro.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim tTab, tExtract(), iIdx%
'
Cancel = True
'
tTab = Range("A5:A" & Range("A" & Rows.Count).End(xlUp).Row).Value
For x = 1 To UBound(tTab, 1) Step 5
    iIdx = iIdx + 1
    ReDim Preserve tExtract(iIdx)
    tExtract(iIdx - 1) = tTab(x, 1)
    tTab(x, 1) = ""
Next
Range("A5:A" & Range("A" & Rows.Count).End(xlUp).Row).Value = tTab
Range("A5").Resize(UBound(tTab, 1), 1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Range("H1").Resize(iIdx, 1).Value = tExtract
'
End Sub

A+

9brenavia.xlsm (14.09 Ko)

Rebonsoir désolé de te déranger encore une fois mais j'ai testé le programme et je crois qu'il ne conviens pas a ce que je vais faire c'est pourquoi je t'envoie l'excel sans certaines données je suis vraiment perdu et je ne sais plus du tout comment faire et je sais même pas si ce que je vais faire est faisable j'aimerais bien mettre mes données comme sur le coté droit au début.Merci de m'aider si tu en as le courage et au passe je ne t'ai pas laissé les 22000 lignes ^^

Salut Brenavia,

mieux ainsi, non ?

Toujours un double-clic pour démarrer la macro.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim tTab, tExtract(), iIdx%
'
Cancel = True
'
tTab = Range("A5:A" & Range("A" & Rows.Count).End(xlUp).Row).Value
For x = 1 To UBound(tTab, 1) Step 5
    iIdx = iIdx + 1
    ReDim Preserve tExtract(4, iIdx)
    For y = 0 To 4
        tExtract(y, iIdx - 1) = tTab(x + y, 1)
    Next
Next
Range("H1").Resize(iIdx, 5).Value = WorksheetFunction.Transpose(tExtract)
'
End Sub

A+

6brenavia.xlsm (14.66 Ko)

Le fichier est en mode protégé je ne peux rien faire dessus je sais pas si c'est moi qui est fait ça en le téléchargeant ou alors vous.

Euh, non, je ne joue jamais à ce genre de jeu idiot de protéger ou bloquer un code!!

Sil le faut, copie le code et colle-le dans un autre fichier!

A+

Excusez moi de vous déranger encore une fois mais je ne comprend pas comment le double clic fonctionne dans l'excel ( je débute le VBA) serais t'il possible de m'expliquer simplement ?

Salut Brenavia,

Double-clic est un événement intercepté par Excel dont tu peux programmer la suite à ta guise, comme d'autres événements.

  • en tapant ALT-F11, tu entres dans l'éditeur VBA ;
  • dans la fenêtre de projet à gauche, tu double-cliques sur la feuille concernée et le code apparaît à droite.

Que dire d'autre ?

A+

Ce que je comprend pas après avoir lu beaucoup de choses sur des sites c'est que je ne sais pas comment exécuter la macro (car elle n’apparaît plus dans le ruban développer) et le double clic du coup ne sert pas a grand chose si j'ai bien compris il ne sert qu'à marquer des choses après?

Evénement = Lorsqu’il est déclenché :

Worksheet_Activate = La feuille est activée.

Worksheet_SheetActivate = Une feuille de calcul du classeur est activée.

Worksheet_BeforeRightClick = Un clic du bouton droit se produit dans la feuille de calcul.

Worksheet_BeforeDoubleClick = Un double clic se produit dans la feuille de calcul.

Worksheet_Deactivate = Une feuille de calcul est désactivée.

Worksheet_Calculate = La feuille de calcul est recalculée.

Worksheet_Change = Une cellule de la feuille de calcul est modifiée.

Worksheet_SelectionChange = La sélection est modifiée.

c'est ce que j'ai trouver sur de nombreux site mais je ne sait pas ce que déclenche chaque événement

Salut Brenavia,

que veux-tu dire ?

car elle n’apparaît plus dans le ruban développer

Plus facile :

  • prends un fichier de travail, fais-en une copie pour test ;
  • ALT-F11 ;
  • double-clic à gauche sur le nom de la feuille qui doit être traitée ;
  • à droite, la fenêtre sera normalement vierge ;
  • colle le code ci-dessous dans la fenêtre de droite ;
  • reviens sur la feuille de travail et double-clic n'importe où sur la feuille ;
  • donne-nous les résultats en espérant que la première ligne à traiter soit [A5] comme le laisse supposer l'image de ton code dans ton premier message.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim tTab, tExtract(), iIdx%
'
Cancel = True
'
tTab = Range("A5:A" & Range("A" & Rows.Count).End(xlUp).Row).Value
For x = 1 To UBound(tTab, 1) Step 5
    iIdx = iIdx + 1
    ReDim Preserve tExtract(iIdx)
    tExtract(iIdx - 1) = tTab(x, 1)
    tTab(x, 1) = ""
Next
Range("A5:A" & Range("A" & Rows.Count).End(xlUp).Row).Value = tTab
Range("A5").Resize(UBound(tTab, 1), 1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Range("H1").Resize(iIdx, 1).Value = tExtract
'
End Sub

Pas de panique : ça va aller!

A+

Mais, j'y pense... sur le fichier que je t'ai envoyé hier...

Les macros sont-elles activées ?

  • Options
  • Centre de gestion de la confidentialité ;
  • Paramètres ;
  • Paramètres des macros ;
  • ACTIVER les macros !

On aurait dû commencer par ça !

A+

oui mes macro sont bien activé mais c'est que je mettais le code que tu me donnais dans une macro que je crée et non sur le code de la feuille voila pourquoi

Merci a toi et si j'ai besoin d'aide je reviens vers toi ^^

ah bah j'ai un probleme et je crois que j'ai besoin de ton aide le probleme c'est que le programme déplace les ligne mais il deplace la première ligne mais après il la copie fois le nombre de choses a déplacer

avant d'avoir exécuter

capture

après avoir exécuter

2
4test.ods (2.59 Ko)

Salut Brenavia,

impossible !

Mon code n'efface aucune donnée en [A] ! Il copie juste les données dans un autre tableau !

Je vois que tu fais tourner en environnement LibreOffice (ODS) que je ne connais pas : incompatibilité de code ??

Je t'enverrais bien une image du résultat que j'obtiens mais, béotien, je ne sais pas comment on fait cette petite chose...

A+

Rechercher des sujets similaires à "petit soucis"