Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Copier ma formule en I2 jusqu'au niveau de la dernière cellule non vide de la colonne H

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous,
Je vous souhaite une belle journée

Je reviens pour un code que je crois avoir déjà obtenu il y a un bon moment et que je n'arrive pas à retrouver.
selon mon fichier test joint, Je voudrais copier ma formule en I2 jusqu'au niveau de la dernière cellule non vide de la colonne H.
H est non vide jusqu'à la ligne 21 donc la formule en I2 est à copier de I3 à I21

N'ayant pas trouvé, je me tourne une nouvelle fois vers nos ténors.
Auriez-vous le bon code ?
Je vous remercie vivement,
Amicalement,
lionel,
 

Pièces jointes

  • test_forum.xls
    836.5 KB · Affichages: 15
Dernière édition:
Solution
Hello tous

quelques trucs pour naviguer avec le clavier
* un double clic sur une bordure de la cellule==> la selection se déplace jusqu'à la prochaine cellule non vide
(si bordure du bas: cellule sur la meme colonne vers le bas, si bordure de droite: cellule sur meme ligne vers la droite.. etc etc

C'est quand meme beaucoup plus pratique que de faire un scroll avec l'ascenceur pour aller à la dernière ligne d'une feuille

* double clic + Shift = la range (cellule depart : cellule fin) est selectionnée

au clavier Sans souris
* double clic sur la bordure = Ctrl + fleche
* double clic + shift = Ctrl +Shift + flèche


*si double clic sur la croix: c'est une recopie vers le bas de la formule

sous vba, tout ca utilise le...

Usine à gaz

XLDnaute Barbatruc
Re-Bonjour,
Le petit carré n'est pas facile à ajuster.
J'ai enregistré l'action en vba et ça donne ce code :
VB:
Sub Macro1()
    [i2] = "=LOOKUP(RC[-1],km)"
    [i2].Select
    Selection.AutoFill Destination:=Range("I2:I100")
End Sub

J'ai un grand nombre de feuilles pour lesquelles il faut que fasse cette opération et pour bcp de fichiers.

Est-il possible que le code soit adapté de cette façon ? :
Selection.AutoFill Destination:=Range("I2:I100")
- 100 remplacé par : jusqu'au niveau de la dernière cellule non vide de la colonne H
lionel,
 

vgendron

XLDnaute Barbatruc
Hello tous

quelques trucs pour naviguer avec le clavier
* un double clic sur une bordure de la cellule==> la selection se déplace jusqu'à la prochaine cellule non vide
(si bordure du bas: cellule sur la meme colonne vers le bas, si bordure de droite: cellule sur meme ligne vers la droite.. etc etc

C'est quand meme beaucoup plus pratique que de faire un scroll avec l'ascenceur pour aller à la dernière ligne d'une feuille

* double clic + Shift = la range (cellule depart : cellule fin) est selectionnée

au clavier Sans souris
* double clic sur la bordure = Ctrl + fleche
* double clic + shift = Ctrl +Shift + flèche


*si double clic sur la croix: c'est une recopie vers le bas de la formule

sous vba, tout ca utilise le activecell.end(xldown)

donc ton souci est de trouver la valeur de la dernière ligne (ici 100)
Fin=activecell.end(xldown).row
Selection.AutoFill Destination:=Range("I2:I" &fin)

OU
Fin=activecell.offset(0,-1).end(xldown).row
 

job75

XLDnaute Barbatruc
Bonjour Lionel, JHA, vgendron,

On peut s'appuyer sur CurrentRegion :
VB:
Sub Macro1()
With [A1].CurrentRegion
    If .Rows.Count > 1 Then .Cells(2, 9).Resize(.Rows.Count - 1) = "=LOOKUP(H2,km)"
End With
End Sub
A+
 

Usine à gaz

XLDnaute Barbatruc
Bonjour Gérard, le Forum,
Je vous souhaite un bon WE

Code Gérard :
J'aurais voulu remplacer les formules par leurs valeurs sans passer par copier/coller valeur.
Je n'arrive pas à placer le ".value" correctement.
Voudrais-tu me dire comment faire :
VB:
Sub Gérard()
With [A1].CurrentRegion
    If .Rows.Count > 1 Then .Cells(2, 9).Resize(.Rows.Count - 1).Value = "=IF(RC[-1]<>"""",LOOKUP(RC[-1],km),"""")"
    'Cells(2 ligne, 9 colonne)
    Columns("I:I").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    [A1].Select
End With
End Sub
J'ai une autre p'tite question :
With [A1].CurrentRegion
- à koi sert le [A1] ?
- est-ce que la cellule [A1] doit être obligatoirement NON vide ?
Merci Gérard
lionel,
 

job75

XLDnaute Barbatruc
Bonjour Lionel, merinos,

Allons Lionel, en VBA les Select sont à proscrire :
VB:
Sub Gérard()
With [A1].CurrentRegion
    If .Rows.Count > 1 Then .Cells(2, 9).Resize(.Rows.Count - 1) = "=IF(RC[-1]<>"""",LOOKUP(RC[-1],km),"""")"
    .Columns(9) = .Columns(9).Value 'supprime les formules
End With
End Sub
Pour comprendre CurrentRegion fait des essais en ajoutant le code MsgBox .Address dans le bloc With.

A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…