Modification du champs d'action du code VBA

Bonjour à tous,

Je fais appelle à votre aide car j'ai un petit problème avec un code VBA,

En effet, un personne de ce forum m'a écris le code ci-dessous qui permettait de séparer le contenu présent dans une case,

Il se trouve que mon nombre de ligne est désormais supérieur a 500 et je n'arrive pas à trouver la partie du code qui gère cette variable car je suis novice en la matière,

Auriez-vous une idée ?

Merci d'avance pour votre aide,

Cordialement,

PLUMEA.

Code VBA :

Option Explicit

Dim fb As Worksheet, fn As Worksheet, tablo, tabloR()

Dim i&, j&, k&, nb&, n&

Sub ListeDesCours()

Set fb = Sheets("Extract brute")

Set fn = Sheets("Extract nette")

'liste des courts en colonne H

Range("AH:AH").ClearContents

tablo = Range("A1:AG" & Range("A" & Rows.Count).End(xlUp).Row)

k = 0

For i = 2 To UBound(tablo, 1)

For j = 18 To UBound(tablo, 2)

If tablo(i, j) <> "" Then

ReDim Preserve tabloR(1 To 1, 1 To k + 1)

tabloR(1, k + 1) = tablo(i, j)

k = k + 1

End If

Next j

Next i

Range("AH2").Resize(UBound(tabloR, 2), 1) = Application.Transpose(tabloR)

'Extraction

fn.Range("A2:AG" & Application.Max(2, fn.Range("A" & Rows.Count).End(xlUp).Row)).ClearContents

fb.Range("A2:AG" & Application.Max(2, fb.Range("A" & Rows.Count).End(xlUp).Row)).Copy fn.Range("A2")

'k = 0

For i = fn.Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1

nb = Application.WorksheetFunction.CountA(fn.Range("R" & i & ":AG" & i))

If nb = 0 Then

fn.Range("A" & i & ":AG" & i).Delete Shift:=xlUp

ElseIf nb > 1 Then

For n = 1 To nb - 1

fn.Range("A" & i & ":AG" & i).Copy

fn.Range("A" & i + n).Insert Shift:=xlDown

Next n

End If

Next i

fn.Activate

End Sub

Bonjour Plumea le forum

un petit fichier mais la macro que tu as mis il faut la sélectionner et mettre les balises de code

et je ne vois pas ce qui empêcherait de traiter + de 500 lignes avec ta macro

a+

Papou

Bonjour paritec,

Voici le fichier excel et le mode opératoire,

Je suis d'accord avec toi je ne remarque aucune limite de traitement pourtant cela ne marche pas à partir de la 467 ème ligne,

Merci d'avance,

PLUMEA

14dancev1forum.xlsm (304.10 Ko)

Bonjour à tous,

Je fais appelle à votre aide car j'ai un petit problème avec un code VBA,

En effet, un personne de ce forum m'a écris le code ci-dessous qui permettait de séparer le contenu présent dans une case,

Il se trouve que mon nombre de ligne est désormais supérieur a 500 et je n'arrive pas à trouver la partie du code qui gère cette variable car je suis novice en la matière,

Auriez-vous une idée ?

Merci d'avance pour votre aide,

Cordialement,

PLUMEA.

Code VBA :

Option Explicit

Dim fb As Worksheet, fn As Worksheet, tablo, tabloR()

Dim i&, j&, k&, nb&, n&

Sub ListeDesCours()

Set fb = Sheets("Extract brute")

Set fn = Sheets("Extract nette")

'liste des courts en colonne H

Range("AH:AH").ClearContents

tablo = Range("A1:AG" & Range("A" & Rows.Count).End(xlUp).Row)

k = 0

For i = 2 To UBound(tablo, 1)

For j = 18 To UBound(tablo, 2)

If tablo(i, j) <> "" Then

ReDim Preserve tabloR(1 To 1, 1 To k + 1)

tabloR(1, k + 1) = tablo(i, j)

k = k + 1

End If

Next j

Next i

Range("AH2").Resize(UBound(tabloR, 2), 1) = Application.Transpose(tabloR)

'Extraction

fn.Range("A2:AG" & Application.Max(2, fn.Range("A" & Rows.Count).End(xlUp).Row)).ClearContents

fb.Range("A2:AG" & Application.Max(2, fb.Range("A" & Rows.Count).End(xlUp).Row)).Copy fn.Range("A2")

'k = 0

For i = fn.Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1

nb = Application.WorksheetFunction.CountA(fn.Range("R" & i & ":AG" & i))

If nb = 0 Then

fn.Range("A" & i & ":AG" & i).Delete Shift:=xlUp

ElseIf nb > 1 Then

For n = 1 To nb - 1

fn.Range("A" & i & ":AG" & i).Copy

fn.Range("A" & i + n).Insert Shift:=xlDown

Next n

End If

Next i

fn.Activate

End Sub

bonjour

salut paritec

je vois 3 fois le même onglet !

à quoi sert la macro ?

note : danger ! voir un juriste concernant le RGPD. Risque de très forte amende, car Excel protège mal les fichiers.

Bonjour jmd,

Le premier onglet permet d'extraire des données d'un autre fichier source,

En cliquant sur Listedecours un traitement s'effectue sur la base de donéee (si la personne réalise deux cours, ses données son copiés la ligne suivante pour n'avoir toujours un cours par ligne, dans un second temps la macro répercute tous les cours dans une seule et même colonne,

j'arrive à traiter 467 lignes mais pas plus et je n'arrive vraiment pas à comprendre pourquoi,

Le deuxième onglet permet d'avoir un récapitulatif des cours par personne

Le troisième onglet permet de faire des recherche avec le numéro étudiant

Un 4ème page que j'ai supprimé servait à faire une synthèse du nombre de personnes pour chaque cours,

Cordialement,

PLUMEA

re

pas bien compris, tu sépares 2 cours en 2 lignes pour ensuite les remettre ensemble sur une même ligne ?

note : récupérer des données et ensuite séparer une colonne en 2 lignes c'est un job pour le menu Données Obtenir. On n'utilise plus VBA depuis 10 ans.

joins une extraction brute, car celle de ton fichier n'est pas accessible (bloquée).

Bonjour à tous,

JMD

On n'utilise plus VBA depuis 10 ans.

J'espère que tu penses que tu as raison en écrivant de telles énormités???

Ton PQ ne remplacera jamais VBA, lorsqu’il faut traiter des données avec des formulaires, ton PQ ou BI fera quoi???

Il faut que tu arrêtes de systématiquement penser qu' il n'y a que toi qui pense bien.

C'est comme les fichiers partagés qui ne fonctionnent pas et qui sont un fiasco complet !!!!! (ton avis perso)

Pour toi certainement. Moi qui ai des applications entièrement VBA qui tournent avec des fichiers partagés, et même avec des feuilles protégées, alors que c'est normalement impossible, je peux te dire que cela ne pose aucun problème, j'ai bien dit aucun.

Tes convictions sont une chose, mais ce n'est pas parole d'évangile, que tu préfères PQ et BI c'est ta préférence, mais cela ne prouve en rien que tu aies toujours raison.

bonne journée

Papou

re

RGPD et non tgpd comme écrit plus haut (j'ai corrigé dans le message)

DANGER !

paritec,

si on a vraiment besoin de formulaires, alors on prend un SGBD (Access... )

idem si on a vraiment besoin de saisies fréquentes à plusieurs dans un même fichier (ou alors, moi dans ce cas, pour rester sous Excel, je mets à disposition un fichier pour chaque personne, et je récupère les données avec PQuery).

quant à "traiter" des données, venant de divers xls(x) ou csv ou txt ou autres, le mieux, rapide, fiable, sans limite de volume de données (ou presque) c'est bien Power Query.

note : un super VBAiste, comme un super Pythoniste, saura faire fonctionner des macros de manière durable. Tu es dans ce cas. Mais vous êtes peu nombreux.

si tu devais conseiller un jeune qui débute sous Excel, que lui conseillerais-tu ?

pour moi ce sera le menu Données (et tous ses détails), et Power BI.

et comme langage Python.

note 2 : selon toi VBA ne pose aucun problème. Compte donc les questions VBA sur ce forum pour te rendre compte du contraire.

y compris parfois sur des développements faits par d'excellents VBAistes.

note 3 : je continue à recommander VBA pour certains cas trèèèèèèèès particuliers de traitements.

mais c'est rare. Par exemple sur de vieilles versions d'Excel (avant les smartphones) non compatibles PQuery.

note 4 : j'ai une réelle admiration, teintée de jalousie, envers les super-VBAistes.

amitiés excelliennes.

Re Jmd le forum

selon toi VBA ne pose aucun problème.

Non je n'ai jamais dit cela.

Je dis que comme tout programme, s'il est fait et s'il tient compte des contraintes, et des bêtises qui peuvent y être faite, (sans pouvoir garantir rien à 100% jamais) il est, et reste fiable.

Maintenant rien n'est jamais simple à 100%, je viens de galérer avec un programme en C++ et une modification qui aurait du prendre 5 minutes au plus, j'y ai passé 3 jours !!!

Ce que je veux te dire c'est que PQ est certainement très bien pour gérer des fichiers, les transformer, mais en aucun cas valable pour travailler avec des formulaires.

Tu parles de fiabilité avec les fonctions de base et outils Excel, tu vas me dire que les dtpicker et autre calendar c'est le top avec excel??

Aucune version n'est compatible les unes avec les autres. Excel de base n'a pas que des qualités, même si c'est mon tableur préféré.

bonne journée

Papou

re

- pas de formulaires dans Excel. Jamais. C'est inutile.

- pas de tpicker et autre calendar dans Excel. Jamais. C'est inutile.

si on a réellement besoin de ces choses-là, c'est qu'on fait des dizaines de saisies par jour, alors on doit passer à un SGBD. Inutile de bricoler des choses sous Excel, il n'est absolument pas conçu pour ça. Microsoft le bride en ce sens.

bonne journée

amitiés

Rechercher des sujets similaires à "modification champs action code vba"