ligne vide (macro)

  • Initiateur de la discussion Tibo
  • Date de début
T

Tibo

Guest
Salut a tous!

Est que vous auriez la solution pour selectionner la premiere lligne vide d'une liste avec une macro???

merci d'avance !
Longue vie au forum!
 
R

Ronan

Guest
Bonjour,

Si par exemple ton tableau se situe dans la plage A1:F250.
Le programme doit trouver la première ligne vide correspondant, dans l'exemple précédent, à la ligne 251.
Pour cela, il faut prendre en référence une colonne (n'importe laquelle)
Par exemple la colonne 1 (cad la colonne A).

DerLigne=Sheets("MaFeuille").Cells(65536,1).End(xlUp).Row+1

DerLigne renvoi le numéro de ligne 251

@+

Ronan
 
P

Pascal76

Guest
Bonjour Tout le monde

La solution de Ronan en fait donne la "première-dernière" ligne vide. Si il y a des lignes vide entre 2 elles ne seront pas pris en compte.

Pour cela il faut

DerLigne=Sheets("MaFeuille").Range("A1")End(xldown).Row+1

Bon courage

Pascal
 
T

Tibo

Guest
Tout d'abord merci pour ta reponse Ronan.
En fait ce que je voudrais c'est pouvoir coller un truc selectionner auparavant au bout d'une liste, voila avec quoi j'essaie de me depatouiller:

Dim i As Integer
Dim j As Integer
i = 0
j = 1
Sheets("arb1").Select
For i = 4 To 1000
If Range("A" & i + 3) = "B.I." Then
Range("A" & i + 3, "L" & i + 3).Select
Selection.Copy
Sheets("F2").Cells(A65536, A1).End(xlUp).Row+1.Select
ActiveSheet.Paste
j = j + 1
Application.CutCopyMode = False
Sheets("arb1").Select
Next i
End If
End Sub

Le truc c'est que ca :

Sheets("F2").Cells(65536,1).End(xlUp).Row+1.Select

VBA il en veut pas!
bon moi je ne comprends rien a VBA mais ptetre que tu peux m'aider ?

En tout cas merci !
 
Y

Yeahou

Guest
Bonjour Tibo, Ronan, Pascal76, le Forum

Tibo, le code ci dessous fonctionne, j'ai un peu clarifié ta macro

Cordialement, A+

Dim i As Integer
i = 0
For i = 7 To 1000
If Sheets("arb1").Range("A" & i).FormulaR1C1 = "B.I." Then
Sheets("arb1").Range("A" & i, "L" & i).Copy Destination:=Sheets("F2").[A65536].End(xlUp).Offset(1, 0)
Application.CutCopyMode = False
End If
Next i
 
P

Pascal76

Guest
Voilà ton code modifié mais non optimisé

Dim i As Integer
Dim j As Integer
dim DerLigne as integer
j = 1
Sheets("arb1").Select
For i = 4 To 1000
If Range("A" & i + 3) = "B.I." Then
Range("A" & i + 3, "L" & i + 3).Select
Selection.Copy
Derligne=Sheets("F2").Range("A65536").End(xlUp).Row+1
Sheets("F2").Range("A" & DerLigne).select
ActiveSheet.Paste
j = j + 1
Application.CutCopyMode = False
Sheets("arb1").Select
Next i
End If
End Sub

Bon courage

Pascal
 
T

Tibo

Guest
Merci Yeahou et Pascal

Je ne voulais pas vous deranger une nouvelle fois mais:
Le debugger me pointe la ligne :

Sheets("F2").Range("A" & DerLigne).Select

Bon si ca vous saoule vous n'etes pas obliger de repondre, je comprendrai.
 
T

Tibo

Guest
En fait en mettant :

"Sheet ("F2").Select" avant le "Derligne=..." ca fonctionne parfaitement!
Par contre Yeahoo j'ai pas reussi a faire fonctionner le tien, mais je te rassure ca doit venir de moi...

donc merci!
 
Y

Yeahou

Guest
Bonjour tibo, le forum

fonctionne pas ?
tu utilise i ou j aprés ?
auquel cas, rétablis les i et j précédemment définis

Dim i As Integer
Dim j As Integer
j = 1
For i = 4 To 1000
If Sheets("arb1").Range("A" & i + 3).FormulaR1C1 = "B.I." Then
Sheets("arb1").Range("A" & (i + 3) & ":" & "L" & (i + 3)).Copy Destination:=Sheets("F2").[A65536].End(xlUp).Offset(1, 0)
j = j + 1
End If
Next i

si tu utilise une version antérieure à 2002, cette macro devrait être compatible

Dim i As Integer
For i = 7 To 1000
If Sheets("arb1").Range("A" & i).FormulaR1C1 = "B.I." Then
Sheets("arb1").Range("A" & i & ":" & "L" & i).Copy Destination:=Sheets("F2").[A65536].End(xlUp).Offset(1, 0)
End If
Next i

ou peut être est ce l'absence de sélection qui te trouble car ce code modifie les feuilles sans avoir besoin de les activer ou de les sélectionner. tu peux le lancer même si tu es sur une troisiéme feuille et F2 sera mise à jour sans changer de feuille active.

Cordialement, A+
 

Discussions similaires

Statistiques des forums

Discussions
312 391
Messages
2 087 941
Membres
103 679
dernier inscrit
yprivey3