Problème macro sélection données/copie ou caché des lignes

Bonjour à tous,

Voilà mon problème je ne comprends pas pourquoi le logiciel me dis que la sélection n'est pas bonne.

Est-ce que quelqu'un pourrait m'aider à corriger mon erreur?

capture

Merci d'avance.

Bonjour,

Le code surligné est bon ... seulement si le nom de la feuille "Feuil2" est bon (majuscule et minuscules).

Si tu as un With Sheets("Feuil2") > tu pourrais y descendre le code surligné.

Au lieu d'une image, mets le code sous balise [</>] le bouton juste au dessus.

ric

Bon bah je ne comprends pas alors le nom est bon, j'ai même modifié pour voir.

Merci quand même

Bonjour,

Est-ce que ceci donne la même erreur ?

   dl = Sheets("Feuil2").Cells(Rows.Count, "A").End(xlUp).Row

ric

Bonjour,

Est-ce que ceci donne la même erreur ?

   dl = Sheets("Feuil2").Cells(Rows.Count, "A").End(xlUp).Row

ric

Oui même erreur.

Bonjour,

Peut-on voir le fichier anonymisé ?

ric

Ah désolé pas tout c'est professionnel interdit de diffusé, je sais ça serais plus simple mais je ne peux pas ^^

Bonjour Minato, ric,

1) as-tu bien vérifié le nom de la feuille ? peut-être ta feuille est Feuil2 avec un espace en trop à la fin ? ou Feuil2 avec un espace en trop devant ? ou peut-être les 2 à la fois : Feuil2 ; peut-être est-ce Feuille2 ou feuille2 avec un « le » final ?

2) tu as écrit : « la sélection n'est pas bonne » ; mais tu parles de « Sheets » ou de la ligne de code VBA qui est surlignée en jaune ? dans ce 2ème cas, quel est ton message d'erreur ? c'est peut-être dû à tes 3 variables Integer au lieu de Long ; met ceci :

Dim dl As Long, dl2 As Long, i As Long ou en plus court : Dim dl&, dl2&, i&

3) note que tu as mis Sheets("Feuil2") pour dl et Sheets("Feuil1") pour dl2 ; tu as p't'être inversé ?

ce serait : Sheets("Feuil1") pour dl et Sheets("Feuil2") pour dl2


même si tu corriges ton problème, une autre erreur de compilation t'attends après ! tu as mis :

For i = 61 And i < 108 To dl

ça aura plus de chances de passer avec :

For i = 61 To dl

si vraiment tu veux limiter à « avant 108 » :

  If dl > 107 Then dl = 107
  For i = 61 To dl
    ..
  Next i

dhany

Ok je vais voir au boulot la prochaine fois

merci pour ton retour d'info ; bonne chance !

dhany

Bonjour Minato, ric,

1) as-tu bien vérifié le nom de la feuille ? peut-être ta feuille est Feuil2 avec un espace en trop à la fin ? ou Feuil2 avec un espace en trop devant ? ou peut-être les 2 à la fois : Feuil2 ; peut-être est-ce Feuille2 ou feuille2 avec un « le » final ?

2) tu as écrit : « la sélection n'est pas bonne » ; mais tu parles de « Sheets » ou de la ligne de code VBA qui est surlignée en jaune ? dans ce 2ème cas, quel est ton message d'erreur ? c'est peut-être dû à tes 3 variables Integer au lieu de Long ; met ceci :

Dim dl As Long, dl2 As Long, i As Long ou en plus court : Dim dl&, dl2&, i&

3) note que tu as mis Sheets("Feuil2") pour dl et Sheets("Feuil1") pour dl2 ; tu as p't'être inversé ?

ce serait : Sheets("Feuil1") pour dl et Sheets("Feuil2") pour dl2


même si tu corriges ton problème, une autre erreur de compilation t'attends après ! tu as mis :

For i = 61 And i < 108 To dl

ça aura plus de chances de passer avec :

For i = 61 To dl

si vraiment tu veux limiter à « avant 108 » :

  If dl > 107 Then dl = 107
  For i = 61 To dl
    ..
  Next i

dhany

Bonjour,

Après avoir effectué des tests avec ce que tu m'as proposé toujours le même problème. Voici le message d'erreur :

message erreur

Merci beaucoup pour ton aide

Bonjour Minato,

pour t'aider davantage, il faudrait ton classeur (sans données confidentielles) ; pour cela, tu peux utiliser le bouton « Ajouter des fichiers » qui est situé juste sous la fenêtre d'édition de ton post.

dhany

ajout : comme tu avais écrit : « Ah désolé pas tout c'est professionnel interdit de diffusé, je sais ça serais plus simple mais je ne peux pas ^^ » : remplace les vraies données par des données fictives !

dhany

6macro.xlsm (105.65 Ko)

Voilà

screen

tu peux aussi choisir de renommer ta feuille en "Page de garde (2)" (avec un seul espace entre « garde » et la parenthèse gauche)

idem si tu renommes ta feuille en "Page de garde" : Sheets("Page de garde")

dhany

Oui la feuille F2 n'existe pas comme j'ai du supprimé des feuilles pour pouvoir te l'envoyer ^^

Ok je vais essayé je te dis quoi après

Bon pour ce problème c'est réglé, maintenant ça m'a mis une nouvelle erreur :

message erreur copie copie cellule

Merci beaucoup pour l'aide précédente.

Là je pense que la formulation pour copier les cellules est mauvaise, j'en ai essayé plusieurs mais je penses que ça sera plus simple avec de l'aide (j'ai essayé en mettant copy sheets plusieurs fois avec des colonnes différentes genre .Range("B"&i). CopySheets.("Page de garde ") mais ça fonctionne pas non plus .

??? pourquoi as-tu laissé un espace à la fin du nom de feuille ? c'est inutile !

nomme simplement ta feuille Page de garde au lieu de Page de garde

et utilise dans le code VBA Sheets("Page de garde") au lieu de Sheets("Page de garde ")


pour ton 2ème problème, tu as écrit .Range("L" & d12) avec un chiffre 1 au lieu de l (= L minuscule)

idem pour .Range("R" & d12) : chiffre 1 au lieu de l (= L minuscule)

dhany

??? pourquoi as-tu laissé un espace à la fin du nom de feuille ? c'est inutile !

nomme simplement ta feuille Page de garde au lieu de Page de garde

et utilise dans le code VBA Sheets("Page de garde") au lieu de Sheets("Page de garde ")


pour ton 2ème problème, tu as écrit .Range("L" & d12) avec un chiffre 1 au lieu de l (= L minuscule)

idem pour .Range("R" & d12) : chiffre 1 au lieu de l (= L minuscule)

dhany

erreur 1004

Oui j'ai pas vu pour les espaces. Pour copier plusieurs cellule je dois programmer plusieurs cellules de destinations ou ça serait plus simple de programmer la ligne directement?

pour copier plusieurs cellules contigües, par exemple D5:G20 :

[D5:G20].Copy fait la copie dans le presse-papiers de Windows ; ensuite, pour coller la destination, indique seulement la cellule du coin supérieur gauche ; 2 exemples pour un copier / coller en K8 :

[D5:G20].Copy [K8] : copie des données et des formats de cellule ; pour copier seulement les données :

[D5:G20].Copy puis : [K8].PasteSpecial xlPasteValues ou [K8].PasteSpecial -4163

dhany

Rechercher des sujets similaires à "probleme macro selection donnees copie cache lignes"