OVH Cloud OVH Cloud

supprimer lignes vides (marche pas)

29 réponses
Avatar
gilles
bonjour à tous
J'utilise les 2 codes ci-dessous, placés dans lafeuille, pour supprimer les
lignes vides si:
- il n'y a rien dans les cellules de la colonne C
- il n'y a rien dans les cellules de la colonne L

Sub supprimerLigne()
For i = Range("C65536").End(xlUp).Row To 1 Step -1
If Range("C" & i) = Empty Then Rows(i).Delete Shift:=xlUp
Next
End Sub

Sub suppTitresInutiles()
For j = Range("L65536").End(xlUp).Row To 1 Step -1
If Range("L" & j) = Empty Then Rows(j).Delete Shift:=xlUp
Next
End Sub

Le premier fonctione nickel
le deuxième refuse de fonctionner et VBA me renvoit le message suivant:

Erreur d'exécution 13
incompatibilité de type

Y aurait-il des vbatistes éclairés pour m'aider à solutionner ce pb
merci d'avance
--
gilles72

9 réponses

1 2 3
Avatar
gilles
bonjour DANIEL
excuses
http://cjoint.com/?mkjhWQK1Eg
merci
--
gilles72



Bonsoir.
Il faut que tu donnes l'adresse générée par www.cjoint.com.
Cordialement.
Daniel
"gilles" a écrit dans le message de news:

Daniel,
j'ai envoyé le fichier
pour info kek zexplications
tu double-click dans la colonne A de "lma complet"
sur l'onglet "extraction", ça reporte les données
sur l'onglet "liste des inscriptions" tu click sur le bouton jaune, pour
recopier et regrouper
la 2ème macro (qui ne marche pas) n'a pas de bouton pour l'instant
je la lance pour l'instant depuis la fenetre VBA

merci encore kelkesoit le resultat!
à+
--
gilles72








Avatar
Daniel
Bonjour.
J'ai effectué les manoeuvres indiquées et il n'ya RIEN en colonne L. J'ai
mis des informations au hasard dans la colonne L dans la feuille liste
inscriptions. La macro fonctionne.
Cordialement.
Daniel
"gilles" a écrit dans le message de news:

bonjour DANIEL
excuses
http://cjoint.com/?mkjhWQK1Eg
merci
--
gilles72



Bonsoir.
Il faut que tu donnes l'adresse générée par www.cjoint.com.
Cordialement.
Daniel
"gilles" a écrit dans le message de
news:

Daniel,
j'ai envoyé le fichier
pour info kek zexplications
tu double-click dans la colonne A de "lma complet"
sur l'onglet "extraction", ça reporte les données
sur l'onglet "liste des inscriptions" tu click sur le bouton jaune,
pour
recopier et regrouper
la 2ème macro (qui ne marche pas) n'a pas de bouton pour l'instant
je la lance pour l'instant depuis la fenetre VBA

merci encore kelkesoit le resultat!
à+
--
gilles72










Avatar
gilles
bonjour Daniel
oui j'ai oublié un truc:
une macro , désactivée pour l'instant, copie une formule depuis L2 de
"extraction" sur L2 de "liste" et effectue la recopie sur les cellules en
dessous juqu'à 220

Mais moi aussi j'ai essayé avec des valeurs en colonne L et j'obtiens
incompatibilité de type
c'est peute être la version
en tous cas merci encore de ton aide
à+--
gilles72



Bonjour.
J'ai effectué les manoeuvres indiquées et il n'ya RIEN en colonne L. J'ai
mis des informations au hasard dans la colonne L dans la feuille liste
inscriptions. La macro fonctionne.
Cordialement.
Daniel
"gilles" a écrit dans le message de news:

bonjour DANIEL
excuses
http://cjoint.com/?mkjhWQK1Eg
merci
--
gilles72



Bonsoir.
Il faut que tu donnes l'adresse générée par www.cjoint.com.
Cordialement.
Daniel
"gilles" a écrit dans le message de
news:

Daniel,
j'ai envoyé le fichier
pour info kek zexplications
tu double-click dans la colonne A de "lma complet"
sur l'onglet "extraction", ça reporte les données
sur l'onglet "liste des inscriptions" tu click sur le bouton jaune,
pour
recopier et regrouper
la 2ème macro (qui ne marche pas) n'a pas de bouton pour l'instant
je la lance pour l'instant depuis la fenetre VBA

merci encore kelkesoit le resultat!
à+
--
gilles72















Avatar
Daniel
Je ne pense pas que ce soit une question de version. Le code a l'air ultra
classique. Essaye d'exécuter ta macro en mode pas à pas et regarde sur
quelle ligne se produit l'erreur.
Cordialement.
Daniel
"gilles" a écrit dans le message de news:

bonjour Daniel
oui j'ai oublié un truc:
une macro , désactivée pour l'instant, copie une formule depuis L2 de
"extraction" sur L2 de "liste" et effectue la recopie sur les cellules en
dessous juqu'à 220

Mais moi aussi j'ai essayé avec des valeurs en colonne L et j'obtiens
incompatibilité de type
c'est peute être la version
en tous cas merci encore de ton aide
à+--
gilles72



Bonjour.
J'ai effectué les manoeuvres indiquées et il n'ya RIEN en colonne L. J'ai
mis des informations au hasard dans la colonne L dans la feuille liste
inscriptions. La macro fonctionne.
Cordialement.
Daniel
"gilles" a écrit dans le message de
news:

bonjour DANIEL
excuses
http://cjoint.com/?mkjhWQK1Eg
merci
--
gilles72



Bonsoir.
Il faut que tu donnes l'adresse générée par www.cjoint.com.
Cordialement.
Daniel
"gilles" a écrit dans le message de
news:

Daniel,
j'ai envoyé le fichier
pour info kek zexplications
tu double-click dans la colonne A de "lma complet"
sur l'onglet "extraction", ça reporte les données
sur l'onglet "liste des inscriptions" tu click sur le bouton jaune,
pour
recopier et regrouper
la 2ème macro (qui ne marche pas) n'a pas de bouton pour l'instant
je la lance pour l'instant depuis la fenetre VBA

merci encore kelkesoit le resultat!
à+
--
gilles72

















Avatar
Daniel
Quant au 17 novembre, toujours pas compris ?

Bonjour.


Je viens de m'apercevoir que je n'avais pas lu la fin de ton message :
C'était le jour du beaujolais nouveau, mais à vrai dire, ça ne m'a pas
marqué plus que toi.
Cordialement.
Daniel


Avatar
anonymousA
Bonjour,

Je ne saurais trop dire pouquoi , mais cette affaire me parait tourner
autour de range("L"&j)= Empty qui n'est pas clair. Il vaut sans doute
mieux préférer isempty(range("L"&j)).

En effet, Fais l'essai suivant. Tu mets dans une cellule p.e en A1, la
formule ±+C1. En B1 et en C1 tu ne mets rien, donc en A1 tu as 0.
D'évidence , la cellule A1 n'est pas vide, puisqu'il y a une formule,
donc isempty("A1") renverra Faux alors que range("A1")=empty renverra
Vrai ce qui d'ailleurs n'est pas anormal.

Je n'ai pas regardé ce qu'il y a dans ton fichier mais je chercherais
autour de ca, suivant ce qu'il y a dans les cellules de la colonne L.
M'enfin, peut-être que je fais complétement fausse route.

Bon courage.

A+



bonjour Daniel
oui j'ai oublié un truc:
une macro , désactivée pour l'instant, copie une formule depuis L2 de
"extraction" sur L2 de "liste" et effectue la recopie sur les cellules en
dessous juqu'à 220

Mais moi aussi j'ai essayé avec des valeurs en colonne L et j'obtiens
incompatibilité de type
c'est peute être la version
en tous cas merci encore de ton aide
à+--
gilles72




Bonjour.
J'ai effectué les manoeuvres indiquées et il n'ya RIEN en colonne L. J'ai
mis des informations au hasard dans la colonne L dans la feuille liste
inscriptions. La macro fonctionne.
Cordialement.
Daniel
"gilles" a écrit dans le message de news:


bonjour DANIEL
excuses
http://cjoint.com/?mkjhWQK1Eg
merci
--
gilles72




Bonsoir.
Il faut que tu donnes l'adresse générée par www.cjoint.com.
Cordialement.
Daniel
"gilles" a écrit dans le message de
news:


Daniel,
j'ai envoyé le fichier
pour info kek zexplications
tu double-click dans la colonne A de "lma complet"
sur l'onglet "extraction", ça reporte les données
sur l'onglet "liste des inscriptions" tu click sur le bouton jaune,
pour
recopier et regrouper
la 2ème macro (qui ne marche pas) n'a pas de bouton pour l'instant
je la lance pour l'instant depuis la fenetre VBA

merci encore kelkesoit le resultat!
à+
--
gilles72
















Avatar
gilles
salut tavous, Daniel et Anonymous
je suis vraiment étonné de l'assuidité des vbatistes sur le forum parce que
mon message date qauand même du 8/12 et vous êtes toujours là!!
vraiment je me confonds en remerciements
bon ceci dit, Daniel en pas à pas ça donne rien puisqu'il analyse 65536
lignes et avec next j'ai pas le loisir de voir grand chose
quant à ta soluce, anonymous, et bein je n'ai aucune réaction, aucun
changement dans le tableau, les lignes vides en colonnes L restent bien là
sauf si je supprime les formules dans les cellules vides (et encore, celles
intermédiares, pas celles du bas)
par contre c'est vrai que j'ai plus de message d'erreur
j'essaie de comprendre mais vous l'avez sans doute perçu, je ne suis pas un
balais e en VBA
merci tencore
à+
--
gilles72



Bonjour,

Je ne saurais trop dire pouquoi , mais cette affaire me parait tourner
autour de range("L"&j)= Empty qui n'est pas clair. Il vaut sans doute
mieux préférer isempty(range("L"&j)).

En effet, Fais l'essai suivant. Tu mets dans une cellule p.e en A1, la
formule ±+C1. En B1 et en C1 tu ne mets rien, donc en A1 tu as 0.
D'évidence , la cellule A1 n'est pas vide, puisqu'il y a une formule,
donc isempty("A1") renverra Faux alors que range("A1")=empty renverra
Vrai ce qui d'ailleurs n'est pas anormal.

Je n'ai pas regardé ce qu'il y a dans ton fichier mais je chercherais
autour de ca, suivant ce qu'il y a dans les cellules de la colonne L.
M'enfin, peut-être que je fais complétement fausse route.

Bon courage.

A+



bonjour Daniel
oui j'ai oublié un truc:
une macro , désactivée pour l'instant, copie une formule depuis L2 de
"extraction" sur L2 de "liste" et effectue la recopie sur les cellules en
dessous juqu'à 220

Mais moi aussi j'ai essayé avec des valeurs en colonne L et j'obtiens
incompatibilité de type
c'est peute être la version
en tous cas merci encore de ton aide
à+--
gilles72




Bonjour.
J'ai effectué les manoeuvres indiquées et il n'ya RIEN en colonne L. J'ai
mis des informations au hasard dans la colonne L dans la feuille liste
inscriptions. La macro fonctionne.
Cordialement.
Daniel
"gilles" a écrit dans le message de news:


bonjour DANIEL
excuses
http://cjoint.com/?mkjhWQK1Eg
merci
--
gilles72




Bonsoir.
Il faut que tu donnes l'adresse générée par www.cjoint.com.
Cordialement.
Daniel
"gilles" a écrit dans le message de
news:


Daniel,
j'ai envoyé le fichier
pour info kek zexplications
tu double-click dans la colonne A de "lma complet"
sur l'onglet "extraction", ça reporte les données
sur l'onglet "liste des inscriptions" tu click sur le bouton jaune,
pour
recopier et regrouper
la 2ème macro (qui ne marche pas) n'a pas de bouton pour l'instant
je la lance pour l'instant depuis la fenetre VBA

merci encore kelkesoit le resultat!
à+
--
gilles72



















Avatar
Daniel
bon ceci dit, Daniel en pas à pas ça donne rien puisqu'il analyse 65536
lignes et avec next j'ai pas le loisir de voir grand chose


Bonsoir.
Comment ça, il analyse 65536 lignes ?
Range("L65536").End(xlUp).Row donne la ligne de la dernière cellule non vide
de la colonne L. Donc, si tu remplis des valeurs dans les dix premières
lignes, ça doit être très rapide.
Cordialement.
Daniel

Avatar
gilles
re bonsoir Daniel
merci pour ta précision
je pensais qu'il démarrait de la dernière ligne, car il à l'air de mouliner
ça te démontre que je ne suis pas balaise, comme je le disais
ceci dit j'ai enfin réussi et effectively, avec ce code.
la suggestion de anonymous, pour interessante qu'elle était ne donnait rien
Je ne comprends pas ce qui bloquait car, à part insérer dans mon code la
recopie des formules en valeurs (ce que j'avais deja tenté), j'ai pas fait
grand chose
je te joins pour info les 2 codes définitifs qui appellent d'autres procédures
et encore un grand merci à toi et autres autres dieux VBAtistes qui se sont
donnés la peine de suivre mes élucubrations

Sub supprimerLigne() 'ça marche impec même avec des formules dans la cellule
'supprime les lignes vides si rien en colonne C
Call efface_valeurs
Call RECOPIEvaleurs
For i = Range("C65536").End(xlUp).Row To 1 Step -1
If Range("C" & i) = Empty Then Rows(i).Delete Shift:=xlUp
Next
Call TRI
Call suppTitresInutiles
End Sub

Sub suppTitresInutil() 'ça marche pas
'Call trier_L
For j = Range("L65536").End(xlUp).Row To 1 Step -1
If IsEmpty(Range("L" & j)) Then Rows(j).Delete Shift:=xlUp
Next
End Sub

Sub suppTitresInutiles() 'ça marche

Call copie_formuleL
For j = Range("L65536").End(xlUp).Row To 1 Step -1
If Range("L" & j) = Empty Then Rows(j).Delete Shift:=xlUp
Next

End Sub
--
gilles72





1 2 3