Nombre de cellules
Dernière réponse : dans Programmation
Bonjour,
Je débute en Macro, et j'utilise l'enregistrement des macros. LE problèmes c'ets que quand je sélectionne une colonne, avec x nobres de cellules, quand je vais vouloir appliquer la macro à une autre feuille, cela s'appliquera à x cellules aussi, même si x+n cellules sont remplies. Comment y remédier?
Merci d'avance
Je débute en Macro, et j'utilise l'enregistrement des macros. LE problèmes c'ets que quand je sélectionne une colonne, avec x nobres de cellules, quand je vais vouloir appliquer la macro à une autre feuille, cela s'appliquera à x cellules aussi, même si x+n cellules sont remplies. Comment y remédier?
Merci d'avance
Autres pages sur : nombre cellules
Lassé par la pub ? Créez un compte
Salut aqwxc
Fais gaffe, t'as le coin inférieur gauche du clavier azerty comme pseudo !!!
Or donc tu débutes. Et tu t'aides de l'enregistreur. Ben c'est bien ça. Mais ce n'est pas suffisant. Il faut aussi comprendre ce que fait l'enregistreur, pour pouvoir l'adapter.
Attention, le code généré par l'enregistreur est par construction, dépendant des objets actifs et des données sur lesquelles il a été enregistré.
La question "Où est ma dernière ligne ?" est celle qu'on se pose le plus souvent.
C'est pourquoi on en trouve facilement la réponse sur ce forum : http://www.presence-pc.com/forum/ppc/Programmation/tuto...
-------------
Propose-nous ton code, je suis sûr que je peux te montrer comment l'améliorer sur de nombreux axes, et ce, de façon significative.
(Attention à l'art de poster du code sur ce site. Pour être sûr de ne pas commettre d'impair, va lire le règlement si ce n'est déjà fait
)
Fais gaffe, t'as le coin inférieur gauche du clavier azerty comme pseudo !!!
Or donc tu débutes. Et tu t'aides de l'enregistreur. Ben c'est bien ça. Mais ce n'est pas suffisant. Il faut aussi comprendre ce que fait l'enregistreur, pour pouvoir l'adapter.
Attention, le code généré par l'enregistreur est par construction, dépendant des objets actifs et des données sur lesquelles il a été enregistré.
La question "Où est ma dernière ligne ?" est celle qu'on se pose le plus souvent.
C'est pourquoi on en trouve facilement la réponse sur ce forum : http://www.presence-pc.com/forum/ppc/Programmation/tuto...
-------------
Propose-nous ton code, je suis sûr que je peux te montrer comment l'améliorer sur de nombreux axes, et ce, de façon significative.
(Attention à l'art de poster du code sur ce site. Pour être sûr de ne pas commettre d'impair, va lire le règlement si ce n'est déjà fait
)
Bonjour!
Merci beaucoup pour ta reponse et pour ton aide, voici mon code :
[\code]
Merci beaucoup!!!
Merci beaucoup pour ta reponse et pour ton aide, voici mon code :
Range("A2:B14").Select Selection.ClearContents Range("A15:C288").Select ActiveWindow.ScrollRow = 268 ActiveWindow.ScrollRow = 264 ActiveWindow.ScrollRow = 258 ActiveWindow.ScrollRow = 251 ActiveWindow.ScrollRow = 243 ActiveWindow.ScrollRow = 232 ActiveWindow.ScrollRow = 217 ActiveWindow.ScrollRow = 201 ActiveWindow.ScrollRow = 181 ActiveWindow.ScrollRow = 164 ActiveWindow.ScrollRow = 140 ActiveWindow.ScrollRow = 122 ActiveWindow.ScrollRow = 108 ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollRow = 92 ActiveWindow.ScrollRow = 86 ActiveWindow.ScrollRow = 81 ActiveWindow.ScrollRow = 78 ActiveWindow.ScrollRow = 77 ActiveWindow.ScrollRow = 76 ActiveWindow.ScrollRow = 73 ActiveWindow.ScrollRow = 69 ActiveWindow.ScrollRow = 61 ActiveWindow.ScrollRow = 46 ActiveWindow.ScrollRow = 23 ActiveWindow.ScrollRow = 1 Selection.Cut Destination:=Range("A2:C275") Range("C8").Select ActiveCell.FormulaR1C1 = "Time" Range("C9").Select ActiveCell.FormulaR1C1 = "0.1" Range("C10").Select ActiveCell.FormulaR1C1 = "0.2" Range("C11").Select ActiveCell.FormulaR1C1 = "0.3" Range("C9:C11").Select Selection.AutoFill Destination:=Range("C9:C275"), Type:=xlFillDefault Range("C9:C275").Select Range("M269").Select ActiveWindow.ScrollRow = 253 ActiveWindow.ScrollRow = 246 ActiveWindow.ScrollRow = 235 ActiveWindow.ScrollRow = 221 ActiveWindow.ScrollRow = 204 ActiveWindow.ScrollRow = 184 ActiveWindow.ScrollRow = 159 ActiveWindow.ScrollRow = 137 ActiveWindow.ScrollRow = 136 ActiveWindow.ScrollRow = 132 ActiveWindow.ScrollRow = 123 ActiveWindow.ScrollRow = 101 ActiveWindow.ScrollRow = 77 ActiveWindow.ScrollRow = 60 ActiveWindow.ScrollRow = 48 ActiveWindow.ScrollRow = 39 ActiveWindow.ScrollRow = 31 ActiveWindow.ScrollRow = 26 ActiveWindow.ScrollRow = 21 ActiveWindow.ScrollRow = 20 ActiveWindow.ScrollRow = 19 ActiveWindow.ScrollRow = 18 ActiveWindow.ScrollRow = 20 ActiveWindow.ScrollRow = 21 ActiveWindow.ScrollRow = 23 ActiveWindow.ScrollRow = 21 ActiveWindow.ScrollRow = 14 ActiveWindow.ScrollRow = 1 Range("B8").Select ActiveCell.FormulaR1C1 = "Position" Range("B8:C9").Select Range(Selection, Selection.End(xlDown)).Select ActiveSheet.Shapes.AddChart.Select ActiveChart.SetSourceData Source:=Range("Sheet1!$B$8:$C$275") ActiveChart.ChartType = xlLineMarkers ActiveChart.ChartType = xlLineMarkers ActiveChart.SeriesCollection(1).XValues = "={""Time""}" ActiveChart.SeriesCollection(2).Delete ActiveWindow.ScrollRow = 7 ActiveWindow.ScrollRow = 5 ActiveWindow.ScrollRow = 2 ActiveWindow.ScrollRow = 1 ActiveWindow.ScrollRow = 2 ActiveWindow.ScrollRow = 3 ActiveWindow.ScrollRow = 5 ActiveWindow.ScrollRow = 9 ActiveWindow.ScrollRow = 14 ActiveWindow.ScrollRow = 21 ActiveWindow.ScrollRow = 29 ActiveWindow.ScrollRow = 38 ActiveWindow.ScrollRow = 47 ActiveWindow.ScrollRow = 56 ActiveWindow.ScrollRow = 68 ActiveWindow.ScrollRow = 80 ActiveWindow.ScrollRow = 88 ActiveWindow.ScrollRow = 94 ActiveWindow.ScrollRow = 97 ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollRow = 102 ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollRow = 99 ActiveWindow.ScrollRow = 102 ActiveWindow.ScrollRow = 108 ActiveWindow.ScrollRow = 118 ActiveWindow.ScrollRow = 133 ActiveWindow.ScrollRow = 155 ActiveWindow.ScrollRow = 175 ActiveWindow.ScrollRow = 195 ActiveWindow.ScrollRow = 210 ActiveWindow.ScrollRow = 224 ActiveWindow.ScrollRow = 233 ActiveWindow.ScrollRow = 247 ActiveWindow.ScrollRow = 264 ActiveWindow.ScrollRow = 263 ActiveWindow.ScrollRow = 261 ActiveWindow.ScrollRow = 260 ActiveWindow.ScrollRow = 259 ActiveWindow.ScrollRow = 258 ActiveWindow.ScrollRow = 257 ActiveWindow.ScrollRow = 256 ActiveWindow.ScrollRow = 255 ActiveWindow.ScrollRow = 253 ActiveWindow.ScrollRow = 252 ActiveWindow.ScrollRow = 251 ActiveWindow.ScrollRow = 250 ActiveWindow.ScrollRow = 248 ActiveWindow.ScrollRow = 247 ActiveWindow.ScrollRow = 245 ActiveWindow.ScrollRow = 244 ActiveWindow.ScrollRow = 243 ActiveWindow.ScrollRow = 242 ActiveWindow.ScrollRow = 241 ActiveWindow.ScrollRow = 240 ActiveWindow.ScrollRow = 239 ActiveWindow.ScrollRow = 238 ActiveWindow.ScrollRow = 236 ActiveWindow.ScrollRow = 233 ActiveWindow.ScrollRow = 232 ActiveWindow.ScrollRow = 231 ActiveWindow.ScrollRow = 230 ActiveWindow.ScrollRow = 229 ActiveWindow.ScrollRow = 228 ActiveWindow.ScrollRow = 227 ActiveWindow.ScrollRow = 226 ActiveWindow.ScrollRow = 225 ActiveWindow.ScrollRow = 224 ActiveWindow.ScrollRow = 223 ActiveWindow.ScrollRow = 221 ActiveWindow.ScrollRow = 220 ActiveWindow.ScrollRow = 219 ActiveWindow.ScrollRow = 218 ActiveWindow.ScrollRow = 217 ActiveWindow.ScrollRow = 216 ActiveWindow.ScrollRow = 215 ActiveWindow.ScrollRow = 213 ActiveWindow.ScrollRow = 212 ActiveWindow.ScrollRow = 211 ActiveWindow.ScrollRow = 210 ActiveWindow.ScrollRow = 209 ActiveWindow.ScrollRow = 208 ActiveWindow.ScrollRow = 206 ActiveWindow.ScrollRow = 205 ActiveWindow.ScrollRow = 203 ActiveWindow.ScrollRow = 200 ActiveWindow.ScrollRow = 198 ActiveWindow.ScrollRow = 197 ActiveWindow.ScrollRow = 196 ActiveWindow.ScrollRow = 195 ActiveWindow.ScrollRow = 192 ActiveWindow.ScrollRow = 189 ActiveWindow.ScrollRow = 187 ActiveWindow.ScrollRow = 186 ActiveWindow.ScrollRow = 187 ActiveWindow.ScrollRow = 189 ActiveWindow.ScrollRow = 191 ActiveWindow.ScrollRow = 192 ActiveWindow.ScrollRow = 194 ActiveWindow.ScrollRow = 196 ActiveWindow.ScrollRow = 197 ActiveWindow.ScrollRow = 198 ActiveWindow.ScrollRow = 196 ActiveWindow.ScrollRow = 195 ActiveWindow.ScrollRow = 193 ActiveWindow.ScrollRow = 192 ActiveWindow.ScrollRow = 191 ActiveWindow.ScrollRow = 190 ActiveWindow.ScrollRow = 189 ActiveWindow.ScrollRow = 188 ActiveWindow.ScrollRow = 187 ActiveWindow.ScrollRow = 186 ActiveWindow.ScrollRow = 185 ActiveWindow.ScrollRow = 184 ActiveWindow.ScrollRow = 183 ActiveWindow.ScrollRow = 182 ActiveWindow.ScrollRow = 181 ActiveWindow.ScrollRow = 180 ActiveWindow.ScrollRow = 179 ActiveWindow.ScrollRow = 178 ActiveWindow.ScrollRow = 177 ActiveWindow.ScrollRow = 175 ActiveWindow.ScrollRow = 174 ActiveWindow.ScrollRow = 172 ActiveWindow.ScrollRow = 171 ActiveWindow.ScrollRow = 170 ActiveWindow.ScrollRow = 169 ActiveWindow.ScrollRow = 168 ActiveWindow.ScrollRow = 166 ActiveWindow.ScrollRow = 165 ActiveWindow.ScrollRow = 164 ActiveWindow.ScrollRow = 163 ActiveWindow.ScrollRow = 162 ActiveWindow.ScrollRow = 161 ActiveWindow.ScrollRow = 160 ActiveWindow.ScrollRow = 159 ActiveWindow.ScrollRow = 158 ActiveWindow.ScrollRow = 153 ActiveWindow.ScrollRow = 144 ActiveWindow.ScrollRow = 134 ActiveWindow.ScrollRow = 127 ActiveWindow.ScrollRow = 121 ActiveWindow.ScrollRow = 118 ActiveWindow.ScrollRow = 116 ActiveWindow.ScrollRow = 115 ActiveWindow.ScrollRow = 116 ActiveWindow.ScrollRow = 118 ActiveWindow.ScrollRow = 120 ActiveWindow.ScrollRow = 124 ActiveWindow.ScrollRow = 127 ActiveWindow.ScrollRow = 129 ActiveWindow.ScrollRow = 130 ActiveWindow.ScrollRow = 131 ActiveWindow.ScrollRow = 132 ActiveWindow.ScrollRow = 135 ActiveWindow.ScrollRow = 137 ActiveWindow.ScrollRow = 141 ActiveWindow.ScrollRow = 143 ActiveWindow.ScrollRow = 148 ActiveWindow.ScrollRow = 147 ActiveWindow.ScrollRow = 145 ActiveWindow.ScrollRow = 143 ActiveWindow.ScrollRow = 141 ActiveWindow.ScrollRow = 138 ActiveWindow.ScrollRow = 135 ActiveWindow.ScrollRow = 133 ActiveWindow.ScrollRow = 132 ActiveWindow.ScrollRow = 130 ActiveWindow.ScrollRow = 129 ActiveWindow.ScrollRow = 128 ActiveWindow.ScrollRow = 126 ActiveWindow.ScrollRow = 124 ActiveWindow.ScrollRow = 123 ActiveWindow.ScrollRow = 122 ActiveWindow.ScrollRow = 121 ActiveWindow.ScrollRow = 120 ActiveWindow.ScrollRow = 118 ActiveWindow.ScrollRow = 117 ActiveWindow.ScrollRow = 116 ActiveWindow.ScrollRow = 115 ActiveWindow.ScrollRow = 114 ActiveWindow.ScrollRow = 113 ActiveWindow.ScrollRow = 112 ActiveWindow.ScrollRow = 111 ActiveWindow.ScrollRow = 110 ActiveWindow.ScrollRow = 109 ActiveWindow.ScrollRow = 107 ActiveWindow.ScrollRow = 105 ActiveWindow.ScrollRow = 103 ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollRow = 99 ActiveWindow.ScrollRow = 97 ActiveWindow.ScrollRow = 96 ActiveWindow.ScrollRow = 95 ActiveWindow.ScrollRow = 94 ActiveWindow.ScrollRow = 93 ActiveWindow.ScrollRow = 92 ActiveWindow.ScrollRow = 91 ActiveWindow.ScrollRow = 90 ActiveWindow.ScrollRow = 89 ActiveWindow.ScrollRow = 88 ActiveWindow.ScrollRow = 87 ActiveWindow.ScrollRow = 85 ActiveWindow.ScrollRow = 84 ActiveWindow.ScrollRow = 83 ActiveWindow.ScrollRow = 82 ActiveWindow.ScrollRow = 81 ActiveWindow.ScrollRow = 80 ActiveWindow.ScrollRow = 79 ActiveWindow.ScrollRow = 78 ActiveWindow.ScrollRow = 77 ActiveWindow.ScrollRow = 76 ActiveWindow.ScrollRow = 75 ActiveWindow.ScrollRow = 73 ActiveWindow.ScrollRow = 71 ActiveWindow.ScrollRow = 70 ActiveWindow.ScrollRow = 69 ActiveWindow.ScrollRow = 67 ActiveWindow.ScrollRow = 52 ActiveWindow.ScrollRow = 53 ActiveWindow.ScrollRow = 54 ActiveWindow.ScrollRow = 56 ActiveWindow.ScrollRow = 57 ActiveWindow.ScrollRow = 58 ActiveWindow.ScrollRow = 59 ActiveWindow.ScrollRow = 60 ActiveWindow.ScrollRow = 61 ActiveWindow.ScrollRow = 62 ActiveWindow.ScrollRow = 63 ActiveWindow.ScrollRow = 64 ActiveWindow.ScrollRow = 65 ActiveWindow.ScrollRow = 66 ActiveWindow.ScrollRow = 67 ActiveWindow.ScrollRow = 69 ActiveWindow.ScrollRow = 68 ActiveWindow.ScrollRow = 66 ActiveWindow.ScrollRow = 65 ActiveWindow.ScrollRow = 63 ActiveWindow.ScrollRow = 62 ActiveWindow.ScrollRow = 60 ActiveWindow.ScrollRow = 59 ActiveWindow.ScrollRow = 58 ActiveWindow.ScrollRow = 57 ActiveWindow.ScrollRow = 56 ActiveWindow.ScrollRow = 54 ActiveWindow.ScrollRow = 53 ActiveWindow.ScrollRow = 51 ActiveWindow.ScrollRow = 50 ActiveWindow.ScrollRow = 49 ActiveWindow.ScrollRow = 48 ActiveWindow.ScrollRow = 47 ActiveWindow.ScrollRow = 46 ActiveWindow.ScrollRow = 44 ActiveWindow.ScrollRow = 41 ActiveWindow.ScrollRow = 38 ActiveWindow.ScrollRow = 36 ActiveWindow.ScrollRow = 35 ActiveWindow.ScrollRow = 33 ActiveWindow.ScrollRow = 32 ActiveWindow.ScrollRow = 31 ActiveWindow.ScrollRow = 30 ActiveWindow.ScrollRow = 29 ActiveWindow.ScrollRow = 28 ActiveWindow.ScrollRow = 11 ActiveWindow.ScrollRow = 9 ActiveWindow.ScrollRow = 5 ActiveWindow.ScrollRow = 2 ActiveWindow.ScrollRow = 1 Range("M19").Select ActiveSheet.ChartObjects("Chart 1").Activate ActiveSheet.ChartObjects("Chart 1").Activate End Sub
[\code]
Merci beaucoup!!!
Salut,
Eh, tu confonds \ et /, et tu prétends programmer ! Les balises fermantes, en bbcode (utilisé sur ce site), en html, en xml, en sgml... utilisent un slash (/) pas un antislash (\).
Bon, et puis ne t'ai-je pas demandé de comprendre (ne serait-ce qu'un tout petit peu) ce que fait le code ? Non, par ce que là, je vois 215 fois la commande ScrollRow. T'as le droit de débuter, mais ça ne te dispense pas de réfléchir. Donc tu te renseignes sur la commande qui occupe 60% de ton code, et tu avises...
Bon, sinon, le code de l'enregistreur est toujours infâme, par construction.
Il faut le nettoyer. Dans un premier temps, c'est assez facile.
Prenons l'exemple de tes deux premières lignes :
Non, tu ne veux pas sélectionner la zone. Oui, tu veux juste vider le contenu de la zone. Le code devient :
En résumé, à chaque fois que tu as ce type de code : Truc.Select / Selection.Machin, remplace-le par Truc.Machin. Même punition pour les Truc.Activate et les ActiveTruc.
Après ces quelques commentaires pas forcément très agréables et ces critiques très objectives (si, si), je te propose de me relivrer ton code, nettoyé, épuré. Tu vas voir, quand il ne restera que quelques lignes, il sera facile de voir où est x et d'y appliquer x+n...
Tu as jeté un oeil sur le topic précédemment proposé ?
Eh, tu confonds \ et /, et tu prétends programmer ! Les balises fermantes, en bbcode (utilisé sur ce site), en html, en xml, en sgml... utilisent un slash (/) pas un antislash (\).
Bon, et puis ne t'ai-je pas demandé de comprendre (ne serait-ce qu'un tout petit peu) ce que fait le code ? Non, par ce que là, je vois 215 fois la commande ScrollRow. T'as le droit de débuter, mais ça ne te dispense pas de réfléchir. Donc tu te renseignes sur la commande qui occupe 60% de ton code, et tu avises...
Bon, sinon, le code de l'enregistreur est toujours infâme, par construction.
Il faut le nettoyer. Dans un premier temps, c'est assez facile.
Prenons l'exemple de tes deux premières lignes :
Range("A2:B14" ).Select
Selection.ClearContents
Non, tu ne veux pas sélectionner la zone. Oui, tu veux juste vider le contenu de la zone. Le code devient :
Range("A2:B14" ).ClearContents
En résumé, à chaque fois que tu as ce type de code : Truc.Select / Selection.Machin, remplace-le par Truc.Machin. Même punition pour les Truc.Activate et les ActiveTruc.
Après ces quelques commentaires pas forcément très agréables et ces critiques très objectives (si, si), je te propose de me relivrer ton code, nettoyé, épuré. Tu vas voir, quand il ne restera que quelques lignes, il sera facile de voir où est x et d'y appliquer x+n...
Tu as jeté un oeil sur le topic précédemment proposé ?
Merci!
Voici le code allege , cependant, je n'arrive pas a remplir automatiquement les cellules comme precedemment, je ne sais pas pourquoi...le code bug a l'etape autofill.
Merci de ton aide!
Voici le code allege , cependant, je n'arrive pas a remplir automatiquement les cellules comme precedemment, je ne sais pas pourquoi...le code bug a l'etape autofill.
Sub Macroessai()
'
'Macro Macroessai
'
'
Range("A2:B15,C21").ClearContents
Range("A16:B300").Select
ActiveWindow.ScrollRow = 1
Selection.Cut Destination:=Range("A2:B300")
Range("C7").Formula = "Time"
Range("C8").Formula = "0.1"
Range("C9").Formula = "0.2"
Range("C10").Formula = "0.3"
Range("C8:C300").AutoFill Destination:=Range("C8:C300"), Type:=xlFillDefault
Range("C8:C300").Select
ActiveWindow.ScrollRow = 300
End Sub
Merci de ton aide!
Salut aqwxc,
Poour ton probleme a la ligne 15..
essaye de comprendre ce que tu fais !
1. déclare la feuille sur laquelle tu travaille pour identifier sur quel feuille se trouve ton range de départ et de destination. (et meme si c'est le meme)
2. tu as encore un .select et un selection. [...] ligne 8 et 10 qui peuvent etre rassemblé.
(pour ton information les lignes 9 et 17 signifient que tu as utilisé la roulette de la souris pour descendre de 1 (ligne 9 ) et de 300 (ligne 17) !)
Autrement dit, tu peux les supprimer.
3. regarde bien la structure de la ligne 10... et applique la a la ligne 15 avec ce qui convient.
Poour ton probleme a la ligne 15..
essaye de comprendre ce que tu fais !
1. déclare la feuille sur laquelle tu travaille pour identifier sur quel feuille se trouve ton range de départ et de destination. (et meme si c'est le meme)
2. tu as encore un .select et un selection. [...] ligne 8 et 10 qui peuvent etre rassemblé.
(pour ton information les lignes 9 et 17 signifient que tu as utilisé la roulette de la souris pour descendre de 1 (ligne 9 ) et de 300 (ligne 17) !)
Autrement dit, tu peux les supprimer.
3. regarde bien la structure de la ligne 10... et applique la a la ligne 15 avec ce qui convient.
Bonjour,
Merci de ta reponse.
Ce que je veux faire, c'est que j'essaye de reperer le numero de la ligne correspondant a la derniere cellule remplie d'une colonne, et ensuite d'effacer toutes le cellules remplies des colonne voisines a partir de cette ligne la.
Voici mon code :
Mais cela ne marche pas, le code bug a la dernier ligne, je pense qu'il n'aime pas trop le Cy et Dy. Comment y remedier?
Je vous remercie d'avance!
Merci de ta reponse.
Ce que je veux faire, c'est que j'essaye de reperer le numero de la ligne correspondant a la derniere cellule remplie d'une colonne, et ensuite d'effacer toutes le cellules remplies des colonne voisines a partir de cette ligne la.
Voici mon code :
Dim y As Integer
y = Range("B1700").End(xlUp).Offset(1, 0)
Range("Cy:C1700 , Dy:D1700").ClearContents
Mais cela ne marche pas, le code bug a la dernier ligne, je pense qu'il n'aime pas trop le Cy et Dy. Comment y remedier?
Je vous remercie d'avance!
salut,
Alors, si je reprend le code que tu as fait a partir de l'enregistreur de macro (le dernier) ca donne point par point :
mauvais choix & grave erreur : un integer ne va que de -32767 a 32767 ... or excel a qqch comme 65536 lignes.. donc si ton tableau est trop grand.. ta macro ne marchera pas.
utilise Long
ensuite : tu travaille sur quelle feuille ? déclare la sinon ta macro peut s'effectuer sur une autre feuille !
ensuite :
c'est la bonne syntaxe : y te donne l'adresse de la dernière cellule contenu dans la plage ..... ben c'est quoi cette plage !!!!!!!
tu veux connaitre la dernière cellule d'une colonne non ? alors utilise Columns()
ensuite:
là encore l'adresse n'est pas bonne !!!
bon, si on corrige tout ca ca devrai donner qqch comme :
Alors bien sûr ici, la macro trouve a chaque fois la dernière cellule de la colonne B et supprime les colonnes C et D
maintenant il me vient une question... je n'ai pas ton tableau sous les yeux mais pourquoi ne pas supprimer directement les colonnes C et D ?
Ensuite si tu veux l'adapter d'une manière générale du genre je donne le nom d'une colonne et il me supprime les 2 suivantes ...
Mais d'abord étudie ce que je viens de te montrer et notamment la construction du .Range()
@+
Alors, si je reprend le code que tu as fait a partir de l'enregistreur de macro (le dernier) ca donne point par point :
Dim y As Integer
mauvais choix & grave erreur : un integer ne va que de -32767 a 32767 ... or excel a qqch comme 65536 lignes.. donc si ton tableau est trop grand.. ta macro ne marchera pas.
utilise Long
ensuite : tu travaille sur quelle feuille ? déclare la sinon ta macro peut s'effectuer sur une autre feuille !
ensuite :
y = Range("B1700" ).End(xlUp).Offset(1, 0)
c'est la bonne syntaxe : y te donne l'adresse de la dernière cellule contenu dans la plage ..... ben c'est quoi cette plage !!!!!!!
tu veux connaitre la dernière cellule d'une colonne non ? alors utilise Columns()
ensuite:
Range("Cy:C1700 , Dy:D1700" ).ClearContents
là encore l'adresse n'est pas bonne !!!
bon, si on corrige tout ca ca devrai donner qqch comme :
dim y as Long '// tu déclare ta variable en long
dim ws_source as Worksheet '// déclare ta feuille
set ws_source = Worksheets("...")
y = ws_source.Columns("B").end(xlup).row '// tu trouve la ligne de la dernière cellule de ta colonne
ws_source.Range(cells(1,3),cells(y,4)).Clearcontents '// tu supprime le contenu de ta plage
Alors bien sûr ici, la macro trouve a chaque fois la dernière cellule de la colonne B et supprime les colonnes C et D
maintenant il me vient une question... je n'ai pas ton tableau sous les yeux mais pourquoi ne pas supprimer directement les colonnes C et D ?
Ensuite si tu veux l'adapter d'une manière générale du genre je donne le nom d'une colonne et il me supprime les 2 suivantes ...
Mais d'abord étudie ce que je viens de te montrer et notamment la construction du .Range()
@+
Salut,
Zeb vient mettre son grain de sel.
Zeb vient mettre son grain de sel.
Houais, je sais c'est lourd.
' // Pas bon
ws_source.Range(cells(1,3),cells(y,4))....
' // Bon
ws_source.Range(ws_source.cells(1,3), ws_source.cells(y,4))....
Si B est une variable qui contient 2 ou "B", ça marche. Sinon, c'est qu'on a oublié de mettre des guillemets
ws_source.Columns(B)
Quand on écrit du code dans une petite fenêtre entre deux balises [code] sur un forum, de tête et entre deux coups de fils professionnels, réunions du comité technique de la boîte, etc, il est permis de faire une chtite erreur de temps en temps.
Pour ne pas risquer de faire les mêmes étourderies dans l'éditeur VB, prière d'utiliser l'Option Explicit.
Pour ne pas risquer de faire les mêmes étourderies dans l'éditeur VB, prière d'utiliser l'Option Explicit.
Lassé par la pub ? Créez un compte