Code VBA pour recopier dans les lignes non vides

Le
Soya
Bonjour !

Voici un exemple de tableau, qui peut avoir jusqu'à 20 mille lignes :

a b c d
1 Code Opér montant Total
2 4100 aaa xxxx xxxx
3 bbb xxxx xxxx
4 ccc xxxx xxx
5 4215 ddd xxx xx
6 eee xxx xxx

et ainsi de suite
Quel est le code pour faire une macro qui irait identifier le premier code,
à partir de la ligne 2, et qui le recopierait dans chaque cellule vide de la
colonne A, jusqu'à ce qu'elle rencontre le second code, qu'elle recopierait
dans les cellules vides en dessous, jusqu'au 3ème etc. Dans l'exemple,
elle recopierait 4100 jusqu'à la ligne 4 (ccc), puis ensuite 4215 jusqu'à la
ligne 6, etc.

Merci éperdument.
Soya.

ps : en prime, pour un sou de plus, j'aimerais bien aussi qu'elle identifie
les lignes vides (de b à zz) et qu'elle les supprime. Mais je la voudrais à
part. Quelle exigence !
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Soya
Le #4963741
MichDenis, ça ne fonctionne pas. Voici le genre de résultat que j'obtiens :

TD General Account
Sorted by: Date 04-01-06
Sorted by: Date 04-01-06
#N/A 04-03-06
#N/A 04-03-06

Je voudrais qu'il recopie TD, et pas le Sorted by qui se trouve au dessus.
C'est pour cela que je spécifiais qu'il devait démarrer à partir de la ligne
2. Ensuite, quand il rencontre un autre code (que ce soit 4215 ou TD Special
account par exemple), votre solution me recopie tout le temps :"Sorted By".
Quel est mon problème ?


As tu un vrai problème... pour celui-ci, il y a :

Et tu adaptes le nom de ta feuille dans la procédure.
'---------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row) _
.SpecialCells(xlCellTypeBlanks)
.Formula = "=" & .Item(1).Offset(-1).Address(0, 0)
.Value = .Value
End With
End With
End Sub
'---------------------


"Soya"
Bonjour !

Voici un exemple de tableau, qui peut avoir jusqu'à 20 mille lignes :

a b c d
1 Code Opér montant Total
2 4100 aaa xxxx xxxx
3 bbb xxxx xxxx
4 ccc xxxx xxx
5 4215 ddd xxx xx
6 eee xxx xxx

et ainsi de suite...
Quel est le code pour faire une macro qui irait identifier le premier code,
à partir de la ligne 2, et qui le recopierait dans chaque cellule vide de la
colonne A, jusqu'à ce qu'elle rencontre le second code, qu'elle recopierait
dans les cellules vides en dessous, jusqu'au 3ème... etc. Dans l'exemple,
elle recopierait 4100 jusqu'à la ligne 4 (ccc), puis ensuite 4215 jusqu'à la
ligne 6, etc.

Merci éperdument.
Soya.

ps : en prime, pour un sou de plus, j'aimerais bien aussi qu'elle identifie
les lignes vides (de b à zz) et qu'elle les supprime. Mais je la voudrais à
part. Quelle exigence !





MichDenis
Le #4963721
il manquait 2 lignes de code pour te permettre d'enlever les formules sans problèmes

'------------------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
With .SpecialCells(xlCellTypeBlanks)
.Formula = "=" & .Item(1).Offset(-1).Address(0, 0)
End With
t = .Value
.Value = t
End With
End With
End Sub
'------------------------------



"Soya"
MichDenis, ça ne fonctionne pas. Voici le genre de résultat que j'obtiens :

TD General Account
Sorted by: Date 04-01-06
Sorted by: Date 04-01-06
#N/A 04-03-06
#N/A 04-03-06

Je voudrais qu'il recopie TD, et pas le Sorted by qui se trouve au dessus.
C'est pour cela que je spécifiais qu'il devait démarrer à partir de la ligne
2. Ensuite, quand il rencontre un autre code (que ce soit 4215 ou TD Special
account par exemple), votre solution me recopie tout le temps :"Sorted By".
Quel est mon problème ?


As tu un vrai problème... pour celui-ci, il y a :

Et tu adaptes le nom de ta feuille dans la procédure.
'---------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row) _
.SpecialCells(xlCellTypeBlanks)
.Formula = "=" & .Item(1).Offset(-1).Address(0, 0)
.Value = .Value
End With
End With
End Sub
'---------------------


"Soya"
Bonjour !

Voici un exemple de tableau, qui peut avoir jusqu'à 20 mille lignes :

a b c d
1 Code Opér montant Total
2 4100 aaa xxxx xxxx
3 bbb xxxx xxxx
4 ccc xxxx xxx
5 4215 ddd xxx xx
6 eee xxx xxx

et ainsi de suite...
Quel est le code pour faire une macro qui irait identifier le premier code,
à partir de la ligne 2, et qui le recopierait dans chaque cellule vide de la
colonne A, jusqu'à ce qu'elle rencontre le second code, qu'elle recopierait
dans les cellules vides en dessous, jusqu'au 3ème... etc. Dans l'exemple,
elle recopierait 4100 jusqu'à la ligne 4 (ccc), puis ensuite 4215 jusqu'à la
ligne 6, etc.

Merci éperdument.
Soya.

ps : en prime, pour un sou de plus, j'aimerais bien aussi qu'elle identifie
les lignes vides (de b à zz) et qu'elle les supprime. Mais je la voudrais à
part. Quelle exigence !





Soya
Le #4963361
Bonjour MichDenis,

Ça fonctionne ! Et oui, j'avais bien fait une copie de test avant de
massacrer mon fichier :)

J'ai une petite question : Comment faire pour que la portion A1 dans "With
.Range("A1:A" & .Range("A65536").End(xlUp).Row)" devienne une variable ?
Est-ce que c'est possible ?

Merci encore !


il manquait 2 lignes de code pour te permettre d'enlever les formules sans problèmes

'------------------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
With .SpecialCells(xlCellTypeBlanks)
.Formula = "=" & .Item(1).Offset(-1).Address(0, 0)
End With
t = .Value
.Value = t
End With
End With
End Sub
'------------------------------



"Soya"
MichDenis, ça ne fonctionne pas. Voici le genre de résultat que j'obtiens :

TD General Account
Sorted by: Date 04-01-06
Sorted by: Date 04-01-06
#N/A 04-03-06
#N/A 04-03-06

Je voudrais qu'il recopie TD, et pas le Sorted by qui se trouve au dessus.
C'est pour cela que je spécifiais qu'il devait démarrer à partir de la ligne
2. Ensuite, quand il rencontre un autre code (que ce soit 4215 ou TD Special
account par exemple), votre solution me recopie tout le temps :"Sorted By".
Quel est mon problème ?


As tu un vrai problème... pour celui-ci, il y a :

Et tu adaptes le nom de ta feuille dans la procédure.
'---------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row) _
.SpecialCells(xlCellTypeBlanks)
.Formula = "=" & .Item(1).Offset(-1).Address(0, 0)
.Value = .Value
End With
End With
End Sub
'---------------------


"Soya"
Bonjour !

Voici un exemple de tableau, qui peut avoir jusqu'à 20 mille lignes :

a b c d
1 Code Opér montant Total
2 4100 aaa xxxx xxxx
3 bbb xxxx xxxx
4 ccc xxxx xxx
5 4215 ddd xxx xx
6 eee xxx xxx

et ainsi de suite...
Quel est le code pour faire une macro qui irait identifier le premier code,
à partir de la ligne 2, et qui le recopierait dans chaque cellule vide de la
colonne A, jusqu'à ce qu'elle rencontre le second code, qu'elle recopierait
dans les cellules vides en dessous, jusqu'au 3ème... etc. Dans l'exemple,
elle recopierait 4100 jusqu'à la ligne 4 (ccc), puis ensuite 4215 jusqu'à la
ligne 6, etc.

Merci éperdument.
Soya.

ps : en prime, pour un sou de plus, j'aimerais bien aussi qu'elle identifie
les lignes vides (de b à zz) et qu'elle les supprime. Mais je la voudrais à
part. Quelle exigence !










MichDenis
Le #4963351
| Comment faire pour que la portion A1 dans "With
| .Range("A1:A" & .Range("A65536").End(xlUp).Row)" devienne une variable ?

Peux-tu expliquer davantage ce que tu attends par variable
à propos de cette ligne de code ? Qu'est-ce que tu voudrais en faire ?





"Soya"
Bonjour MichDenis,

Ça fonctionne ! Et oui, j'avais bien fait une copie de test avant de
massacrer mon fichier :)

J'ai une petite question : Comment faire pour que la portion A1 dans "With
.Range("A1:A" & .Range("A65536").End(xlUp).Row)" devienne une variable ?
Est-ce que c'est possible ?

Merci encore !


il manquait 2 lignes de code pour te permettre d'enlever les formules sans problèmes

'------------------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
With .SpecialCells(xlCellTypeBlanks)
.Formula = "=" & .Item(1).Offset(-1).Address(0, 0)
End With
t = .Value
.Value = t
End With
End With
End Sub
'------------------------------



"Soya"
MichDenis, ça ne fonctionne pas. Voici le genre de résultat que j'obtiens :

TD General Account
Sorted by: Date 04-01-06
Sorted by: Date 04-01-06
#N/A 04-03-06
#N/A 04-03-06

Je voudrais qu'il recopie TD, et pas le Sorted by qui se trouve au dessus.
C'est pour cela que je spécifiais qu'il devait démarrer à partir de la ligne
2. Ensuite, quand il rencontre un autre code (que ce soit 4215 ou TD Special
account par exemple), votre solution me recopie tout le temps :"Sorted By".
Quel est mon problème ?


As tu un vrai problème... pour celui-ci, il y a :

Et tu adaptes le nom de ta feuille dans la procédure.
'---------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row) _
.SpecialCells(xlCellTypeBlanks)
.Formula = "=" & .Item(1).Offset(-1).Address(0, 0)
.Value = .Value
End With
End With
End Sub
'---------------------


"Soya"
Bonjour !

Voici un exemple de tableau, qui peut avoir jusqu'à 20 mille lignes :

a b c d
1 Code Opér montant Total
2 4100 aaa xxxx xxxx
3 bbb xxxx xxxx
4 ccc xxxx xxx
5 4215 ddd xxx xx
6 eee xxx xxx

et ainsi de suite...
Quel est le code pour faire une macro qui irait identifier le premier code,
à partir de la ligne 2, et qui le recopierait dans chaque cellule vide de la
colonne A, jusqu'à ce qu'elle rencontre le second code, qu'elle recopierait
dans les cellules vides en dessous, jusqu'au 3ème... etc. Dans l'exemple,
elle recopierait 4100 jusqu'à la ligne 4 (ccc), puis ensuite 4215 jusqu'à la
ligne 6, etc.

Merci éperdument.
Soya.

ps : en prime, pour un sou de plus, j'aimerais bien aussi qu'elle identifie
les lignes vides (de b à zz) et qu'elle les supprime. Mais je la voudrais à
part. Quelle exigence !










Soya
Le #4963241
Et bien voilà...

Les tableaux auxquels s'appliquent cette macro ne nous arrivent pas tous au
même format. Les données à recopier de certains se trouvent dans la colonne
A, ou B, ou B et C.

Est-il possible de choisir la colonne, sans que la personne qui utilise le
tableau ait à entrer dans le code pour le modifier ?

Merci de votre temps !


| Comment faire pour que la portion A1 dans "With
| .Range("A1:A" & .Range("A65536").End(xlUp).Row)" devienne une variable ?

Peux-tu expliquer davantage ce que tu attends par variable
à propos de cette ligne de code ? Qu'est-ce que tu voudrais en faire ?





"Soya"
Bonjour MichDenis,

Ça fonctionne ! Et oui, j'avais bien fait une copie de test avant de
massacrer mon fichier :)

J'ai une petite question : Comment faire pour que la portion A1 dans "With
..Range("A1:A" & .Range("A65536").End(xlUp).Row)" devienne une variable ?
Est-ce que c'est possible ?

Merci encore !


il manquait 2 lignes de code pour te permettre d'enlever les formules sans problèmes

'------------------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
With .SpecialCells(xlCellTypeBlanks)
.Formula = "=" & .Item(1).Offset(-1).Address(0, 0)
End With
t = .Value
.Value = t
End With
End With
End Sub
'------------------------------



"Soya"
MichDenis, ça ne fonctionne pas. Voici le genre de résultat que j'obtiens :

TD General Account
Sorted by: Date 04-01-06
Sorted by: Date 04-01-06
#N/A 04-03-06
#N/A 04-03-06

Je voudrais qu'il recopie TD, et pas le Sorted by qui se trouve au dessus.
C'est pour cela que je spécifiais qu'il devait démarrer à partir de la ligne
2. Ensuite, quand il rencontre un autre code (que ce soit 4215 ou TD Special
account par exemple), votre solution me recopie tout le temps :"Sorted By".
Quel est mon problème ?


As tu un vrai problème... pour celui-ci, il y a :

Et tu adaptes le nom de ta feuille dans la procédure.
'---------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row) _
.SpecialCells(xlCellTypeBlanks)
.Formula = "=" & .Item(1).Offset(-1).Address(0, 0)
.Value = .Value
End With
End With
End Sub
'---------------------


"Soya"
Bonjour !

Voici un exemple de tableau, qui peut avoir jusqu'à 20 mille lignes :

a b c d
1 Code Opér montant Total
2 4100 aaa xxxx xxxx
3 bbb xxxx xxxx
4 ccc xxxx xxx
5 4215 ddd xxx xx
6 eee xxx xxx

et ainsi de suite...
Quel est le code pour faire une macro qui irait identifier le premier code,
à partir de la ligne 2, et qui le recopierait dans chaque cellule vide de la
colonne A, jusqu'à ce qu'elle rencontre le second code, qu'elle recopierait
dans les cellules vides en dessous, jusqu'au 3ème... etc. Dans l'exemple,
elle recopierait 4100 jusqu'à la ligne 4 (ccc), puis ensuite 4215 jusqu'à la
ligne 6, etc.

Merci éperdument.
Soya.

ps : en prime, pour un sou de plus, j'aimerais bien aussi qu'elle identifie
les lignes vides (de b à zz) et qu'elle les supprime. Mais je la voudrais à
part. Quelle exigence !















Soya
Le #4963211
Ou alors, si on doit le faire manuellement, qu'est ce que je dois changer
dans le code lorsqu'il s'agit de la colonne B ? J'ai changé pour "B1:B", mais
il m'indique que dans la ligne suivante du code, il y a une incompatibilité.
Et comme c'est un peu du chinois pour moi, je ne sais pas quoi changer.
L'adresse ?


| Comment faire pour que la portion A1 dans "With
| .Range("A1:A" & .Range("A65536").End(xlUp).Row)" devienne une variable ?

Peux-tu expliquer davantage ce que tu attends par variable
à propos de cette ligne de code ? Qu'est-ce que tu voudrais en faire ?





"Soya"
Bonjour MichDenis,

Ça fonctionne ! Et oui, j'avais bien fait une copie de test avant de
massacrer mon fichier :)

J'ai une petite question : Comment faire pour que la portion A1 dans "With
..Range("A1:A" & .Range("A65536").End(xlUp).Row)" devienne une variable ?
Est-ce que c'est possible ?

Merci encore !


il manquait 2 lignes de code pour te permettre d'enlever les formules sans problèmes

'------------------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
With .SpecialCells(xlCellTypeBlanks)
.Formula = "=" & .Item(1).Offset(-1).Address(0, 0)
End With
t = .Value
.Value = t
End With
End With
End Sub
'------------------------------



"Soya"
MichDenis, ça ne fonctionne pas. Voici le genre de résultat que j'obtiens :

TD General Account
Sorted by: Date 04-01-06
Sorted by: Date 04-01-06
#N/A 04-03-06
#N/A 04-03-06

Je voudrais qu'il recopie TD, et pas le Sorted by qui se trouve au dessus.
C'est pour cela que je spécifiais qu'il devait démarrer à partir de la ligne
2. Ensuite, quand il rencontre un autre code (que ce soit 4215 ou TD Special
account par exemple), votre solution me recopie tout le temps :"Sorted By".
Quel est mon problème ?


As tu un vrai problème... pour celui-ci, il y a :

Et tu adaptes le nom de ta feuille dans la procédure.
'---------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row) _
.SpecialCells(xlCellTypeBlanks)
.Formula = "=" & .Item(1).Offset(-1).Address(0, 0)
.Value = .Value
End With
End With
End Sub
'---------------------


"Soya"
Bonjour !

Voici un exemple de tableau, qui peut avoir jusqu'à 20 mille lignes :

a b c d
1 Code Opér montant Total
2 4100 aaa xxxx xxxx
3 bbb xxxx xxxx
4 ccc xxxx xxx
5 4215 ddd xxx xx
6 eee xxx xxx

et ainsi de suite...
Quel est le code pour faire une macro qui irait identifier le premier code,
à partir de la ligne 2, et qui le recopierait dans chaque cellule vide de la
colonne A, jusqu'à ce qu'elle rencontre le second code, qu'elle recopierait
dans les cellules vides en dessous, jusqu'au 3ème... etc. Dans l'exemple,
elle recopierait 4100 jusqu'à la ligne 4 (ccc), puis ensuite 4215 jusqu'à la
ligne 6, etc.

Merci éperdument.
Soya.

ps : en prime, pour un sou de plus, j'aimerais bien aussi qu'elle identifie
les lignes vides (de b à zz) et qu'elle les supprime. Mais je la voudrais à
part. Quelle exigence !















MichDenis
Le #4963191
Ce qui suit devrait fonctionner peu importe la colonne,
tu ne dois changer que le nom de la feuille si nécessaire
et l'adresse des cellules ...

Évidemment, si dans la colonne B1:Bx, il n'y a pas de
cellules vides, une erreur sera générée à cause de la méthode
SpecialCells qui retourne toujours une erreur lorsqu'elle ne trouve
pas de cellules corrrespondantes....Tu peux pallier à ceci en
ajoutant en début de procédure :
On Error Resume Next

'----------------------------
Sub test()

On Error Resume Next
With Worksheets("Feuil1")
With .Range("B1:B" & .Range("B65536").End(xlUp).Row)
With .SpecialCells(xlCellTypeBlanks)
.Formula = "=" & .Item(1).Offset(-1).Address(0, 0)
End With
t = .Value
.Value = t
End With
End With
End Sub
'----------------------------



"Soya"
Ou alors, si on doit le faire manuellement, qu'est ce que je dois changer
dans le code lorsqu'il s'agit de la colonne B ? J'ai changé pour "B1:B", mais
il m'indique que dans la ligne suivante du code, il y a une incompatibilité.
Et comme c'est un peu du chinois pour moi, je ne sais pas quoi changer.
L'adresse ?


| Comment faire pour que la portion A1 dans "With
| .Range("A1:A" & .Range("A65536").End(xlUp).Row)" devienne une variable ?

Peux-tu expliquer davantage ce que tu attends par variable
à propos de cette ligne de code ? Qu'est-ce que tu voudrais en faire ?





"Soya"
Bonjour MichDenis,

Ça fonctionne ! Et oui, j'avais bien fait une copie de test avant de
massacrer mon fichier :)

J'ai une petite question : Comment faire pour que la portion A1 dans "With
..Range("A1:A" & .Range("A65536").End(xlUp).Row)" devienne une variable ?
Est-ce que c'est possible ?

Merci encore !


il manquait 2 lignes de code pour te permettre d'enlever les formules sans problèmes

'------------------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
With .SpecialCells(xlCellTypeBlanks)
.Formula = "=" & .Item(1).Offset(-1).Address(0, 0)
End With
t = .Value
.Value = t
End With
End With
End Sub
'------------------------------



"Soya"
MichDenis, ça ne fonctionne pas. Voici le genre de résultat que j'obtiens :

TD General Account
Sorted by: Date 04-01-06
Sorted by: Date 04-01-06
#N/A 04-03-06
#N/A 04-03-06

Je voudrais qu'il recopie TD, et pas le Sorted by qui se trouve au dessus.
C'est pour cela que je spécifiais qu'il devait démarrer à partir de la ligne
2. Ensuite, quand il rencontre un autre code (que ce soit 4215 ou TD Special
account par exemple), votre solution me recopie tout le temps :"Sorted By".
Quel est mon problème ?


As tu un vrai problème... pour celui-ci, il y a :

Et tu adaptes le nom de ta feuille dans la procédure.
'---------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row) _
.SpecialCells(xlCellTypeBlanks)
.Formula = "=" & .Item(1).Offset(-1).Address(0, 0)
.Value = .Value
End With
End With
End Sub
'---------------------


"Soya"
Bonjour !

Voici un exemple de tableau, qui peut avoir jusqu'à 20 mille lignes :

a b c d
1 Code Opér montant Total
2 4100 aaa xxxx xxxx
3 bbb xxxx xxxx
4 ccc xxxx xxx
5 4215 ddd xxx xx
6 eee xxx xxx

et ainsi de suite...
Quel est le code pour faire une macro qui irait identifier le premier code,
à partir de la ligne 2, et qui le recopierait dans chaque cellule vide de la
colonne A, jusqu'à ce qu'elle rencontre le second code, qu'elle recopierait
dans les cellules vides en dessous, jusqu'au 3ème... etc. Dans l'exemple,
elle recopierait 4100 jusqu'à la ligne 4 (ccc), puis ensuite 4215 jusqu'à la
ligne 6, etc.

Merci éperdument.
Soya.

ps : en prime, pour un sou de plus, j'aimerais bien aussi qu'elle identifie
les lignes vides (de b à zz) et qu'elle les supprime. Mais je la voudrais à
part. Quelle exigence !















Soya
Le #4963101
Quelle oie ! Je ne changeais que le A1:A et je ne changeais pas le A65536...

"C'est la faute à l'ordinateur !" :)

Merci encore pour votre disponibilité. C'est très apprécié.


Ce qui suit devrait fonctionner peu importe la colonne,
tu ne dois changer que le nom de la feuille si nécessaire
et l'adresse des cellules ...

Évidemment, si dans la colonne B1:Bx, il n'y a pas de
cellules vides, une erreur sera générée à cause de la méthode
SpecialCells qui retourne toujours une erreur lorsqu'elle ne trouve
pas de cellules corrrespondantes....Tu peux pallier à ceci en
ajoutant en début de procédure :
On Error Resume Next

'----------------------------
Sub test()

On Error Resume Next
With Worksheets("Feuil1")
With .Range("B1:B" & .Range("B65536").End(xlUp).Row)
With .SpecialCells(xlCellTypeBlanks)
.Formula = "=" & .Item(1).Offset(-1).Address(0, 0)
End With
t = .Value
.Value = t
End With
End With
End Sub
'----------------------------



"Soya"
Ou alors, si on doit le faire manuellement, qu'est ce que je dois changer
dans le code lorsqu'il s'agit de la colonne B ? J'ai changé pour "B1:B", mais
il m'indique que dans la ligne suivante du code, il y a une incompatibilité.
Et comme c'est un peu du chinois pour moi, je ne sais pas quoi changer.
L'adresse ?


| Comment faire pour que la portion A1 dans "With
| .Range("A1:A" & .Range("A65536").End(xlUp).Row)" devienne une variable ?

Peux-tu expliquer davantage ce que tu attends par variable
à propos de cette ligne de code ? Qu'est-ce que tu voudrais en faire ?





"Soya"
Bonjour MichDenis,

Ça fonctionne ! Et oui, j'avais bien fait une copie de test avant de
massacrer mon fichier :)

J'ai une petite question : Comment faire pour que la portion A1 dans "With
..Range("A1:A" & .Range("A65536").End(xlUp).Row)" devienne une variable ?
Est-ce que c'est possible ?

Merci encore !


il manquait 2 lignes de code pour te permettre d'enlever les formules sans problèmes

'------------------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
With .SpecialCells(xlCellTypeBlanks)
.Formula = "=" & .Item(1).Offset(-1).Address(0, 0)
End With
t = .Value
.Value = t
End With
End With
End Sub
'------------------------------



"Soya"
MichDenis, ça ne fonctionne pas. Voici le genre de résultat que j'obtiens :

TD General Account
Sorted by: Date 04-01-06
Sorted by: Date 04-01-06
#N/A 04-03-06
#N/A 04-03-06

Je voudrais qu'il recopie TD, et pas le Sorted by qui se trouve au dessus.
C'est pour cela que je spécifiais qu'il devait démarrer à partir de la ligne
2. Ensuite, quand il rencontre un autre code (que ce soit 4215 ou TD Special
account par exemple), votre solution me recopie tout le temps :"Sorted By".
Quel est mon problème ?


As tu un vrai problème... pour celui-ci, il y a :

Et tu adaptes le nom de ta feuille dans la procédure.
'---------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row) _
.SpecialCells(xlCellTypeBlanks)
.Formula = "=" & .Item(1).Offset(-1).Address(0, 0)
.Value = .Value
End With
End With
End Sub
'---------------------


"Soya"
Bonjour !

Voici un exemple de tableau, qui peut avoir jusqu'à 20 mille lignes :

a b c d
1 Code Opér montant Total
2 4100 aaa xxxx xxxx
3 bbb xxxx xxxx
4 ccc xxxx xxx
5 4215 ddd xxx xx
6 eee xxx xxx

et ainsi de suite...
Quel est le code pour faire une macro qui irait identifier le premier code,
à partir de la ligne 2, et qui le recopierait dans chaque cellule vide de la
colonne A, jusqu'à ce qu'elle rencontre le second code, qu'elle recopierait
dans les cellules vides en dessous, jusqu'au 3ème... etc. Dans l'exemple,
elle recopierait 4100 jusqu'à la ligne 4 (ccc), puis ensuite 4215 jusqu'à la
ligne 6, etc.

Merci éperdument.
Soya.

ps : en prime, pour un sou de plus, j'aimerais bien aussi qu'elle identifie
les lignes vides (de b à zz) et qu'elle les supprime. Mais je la voudrais à
part. Quelle exigence !




















Publicité
Poster une réponse
Anonyme