XL 2010 Code VBA pour écrire 1 de A2 à inconnue

zizou721

XLDnaute Nouveau
Bonjour,
Je souhaite écrire 1 de la cellule A2 à inconnue.
Exemple : si la colonne B2 est rempli jusqu'à B100, il écrit 1 jusqu'à A100.
La colonne B peut varier, l'idéal c'est que la colonne A s'adapte à la variation.
Par avance, merci pour votre aide.
Cordialement,
Zizou
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Zizou, Victor, mapomme,

tu as écrit :
«
Je souhaite écrire 1 de la cellule A2 à inconnue.
Exemple : si la colonne B2 est remplie jusqu'à B100, il écrit 1 jusqu'à A100.
»

ce code VBA remplit avec des 1 à partir de A2 :

VB:
Sub Essai()
  Dim lig&: lig = Cells(Rows.Count, 2).End(3).Row: If lig = 1 Then Exit Sub
  Application.ScreenUpdating = 0: [A2].Resize(lig - 1) = 1
End Sub

soan
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
@mapomme, Zizou,

pour la colonne, c'est facile de voir que colonne n° 2 = colonne B ! 😄
pour une colonne loin à droite, je mets : Cells(Rows.Count, "AA")

suite aux 3 points de ton post #6, j'ai modifié le code VBA
de mon post #5 et celui-ci.
:)

VB:
Sub Essai()
  Dim lig As Long
  lig = Cells(Rows.Count, "B").End(xlUp).Row: If lig = 1 Then Exit Sub
  Application.ScreenUpdating = False: [A2].Resize(lig - 1) = 1
End Sub

bon samedi et bon dimanche à tous. 🍀

soan
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour zizou721, Patrick, mapomme, soan,

Il est encore temps de présenter une autre solution :
VB:
Sub Remplir()
With Range("A2:A" & Cells.SpecialCells(xlCellTypeLastCell).Row)
    If .Row = 1 Then Exit Sub
    .FormulaR1C1 = "=REPT(1,COUNTA(RC[1]))"
    .Value = .Value
End With
End Sub
A+
 

zizou721

XLDnaute Nouveau
Bonsoir,
Les codes fonctionnent bien mais je n'arrive pas à le mettre en place.
J'ai fait un macro et je cherche à remplacer :
Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A2800")
Range("A2:A2800").Select
Je souhaite que ça part de A2 à X...
Merci beaucoup pour votre aide.
Cordialement,
Zizou
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir Zizou, le fil,

essaye ce code VBA :

VB:
Sub Essai()
  Dim lig&: Application.ScreenUpdating = 0
  [A2] = 1: [A3] = 2: lig = 2800 'à adapter
  [A2:A3].AutoFill Range("A2:A" & lig), 4
End Sub
➯ pour A2:A2800 : nombres de 1 à 2799



avec cet autre code VBA :

VB:
Sub Essai()
  Dim lig&: Application.ScreenUpdating = 0
  [A2] = 1: lig = 2800 'à adapter
  [A2].AutoFill Range("A2:A" & lig), 4
End Sub
➯ pour A2:A2800 : y'a que des 1 ! mais alors dans ce cas, c'est tout à fait inutile de faire une recopie incrémentée ! c'est beaucoup plus simple de faire ainsi :

VB:
Sub Essai()
  Dim lig&: Application.ScreenUpdating = 0
  lig = 2800 'à adapter
  Range("A2:A" & lig) = 1
End Sub

le résultat sera identique ! :)

soan
 
Dernière édition:

zizou721

XLDnaute Nouveau
Bonsoir à tous
Et, bonsoir job75, je te remercie pour l'info, je ne savais pas que Select était nuisible...
Je vais essayer de mettre en place encore merci.
job75, question : dans ta formule ci-dessus comment faire si il faut remplacer 1 par un texte?
Cordialement,
Zizou
 

zizou721

XLDnaute Nouveau
Bonsoir Zizou, le fil,

essaye ce code VBA :

VB:
Sub Essai()
  Dim lig&: Application.ScreenUpdating = 0
  [A2] = 1: [A3] = 2: lig = 2800 'à adapter
  [A2:A3].AutoFill Range("A2:A" & lig), 4
End Sub
➯ pour A2:A2800 : nombres de 1 à 2799



avec cet autre code VBA :

VB:
Sub Essai()
  Dim lig&: Application.ScreenUpdating = 0
  [A2] = 1: lig = 2800 'à adapter
  [A2].AutoFill Range("A2:A" & lig), 4
End Sub
➯ pour A2:A2800 : y'a que des 1 ! mais alors dans ce cas, c'est tout à fait inutile de faire une recopie incrémentée ! c'est beaucoup plus simple de faire ainsi :

VB:
Sub Essai()
  Dim lig&: Application.ScreenUpdating = 0
  lig = 2800 'à adapter
  Range("A2:A" & lig) = 1
End Sub

le résultat sera identique ! :)
Bonsoir soan,
Merci pour ta proposition je vais essayer, je te souhaite une excellente soirée
 

Discussions similaires

Statistiques des forums

Discussions
315 132
Messages
2 116 593
Membres
112 799
dernier inscrit
valdeff