A voir également:
- Vba autofill derniere ligne
- Vba étendre formule - Meilleures réponses
- Vba tirer formule vers le bas - Meilleures réponses
- VBA Excel: Etendre une formule jusqu'à la dernière ligne ✓ - Forum - Excel
- AutoFill jusqu'à la dernière cellule non vide ✓ - Forum - Excel
- Vba excel dernière ligne non vide - Conseils pratiques - Visual Basic
- VBA recherche derniere ligne vide ✓ - Forum - VB / VBA
- Excel vba dernière ligne d'un tableau ✓ - Forum - Excel
4 réponses
pijaku
- Messages postés
- 12234
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 4 janvier 2021
Bon.
Il nous suffit donc maintenant, de remplacer dans
Profitons en pour supprimer ces .Select et autres Selection inutiles...
Exemple :
Auparavant, cependant, on cherche depuis tout à l'heure la dernière ligne non vide de la colonne C. Or, dans la colonne C, on cherche à remplir de formule... Donc, pour l'instant, la colonne C ne contient rien, si je ne m'abuse... Donc, cela n'a pas de sens de chercher la dernière ligne non vide de la colonne C.
Il nous suffit donc maintenant, de remplacer dans
Destination:=Range("C6:C450"), 450 par la variable DernLigne.
Profitons en pour supprimer ces .Select et autres Selection inutiles...
Exemple :
Dim DernLigne As Long DernLigne = Range("C" & Rows.Count).End(xlUp).Row Range("C6").AutoFill Destination:=Range("C6:C" & DernLigne)
Auparavant, cependant, on cherche depuis tout à l'heure la dernière ligne non vide de la colonne C. Or, dans la colonne C, on cherche à remplir de formule... Donc, pour l'instant, la colonne C ne contient rien, si je ne m'abuse... Donc, cela n'a pas de sens de chercher la dernière ligne non vide de la colonne C.
pijaku
- Messages postés
- 12234
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 4 janvier 2021
Voici un code, qui devrait fonctionner, A ADAPTER, lis bien les commentaires...
Sub Sans_score11() Dim i As Integer, drLig As Long Application.ScreenUpdating = False 'boucle de 4 au nombre de feuilles du classeur For i = 4 To Sheets.Count 'dans la feuille numéro i With Sheets(i) 'on insère une colonne entre B et C .Columns("C:C").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 'on y inscrit "Sans score" en C5 .Range("C5").Value = "Sans score" 'On inscrit la formule en C6 .Range("C6").FormulaR1C1 = "=COUNTIF(C[9],""*score*"")" '******************************************************************************************* 'Ici, tu dois déterminer qu'elle est la colonne te permettant de trouver 'la dernière ligne. 'La colonne C, nouvellement créée, se termine en C6. Donc pas valable 'La colonne B? L?, à toi de voir et de remplacer dans la ligne suivante : '******************************************************************************************* drLig = .Range("B" & Rows.Count).End(xlUp).Row 'si drLig est inférieure ou égale à 6 la méthode autofill va planter 'donc on teste drLig If drLig <= 6 Then 'si drLig est inférieur ou égal à 6, message à l'utilisateur : MsgBox "La dernière ligne non vide de cette colonne (feuille " & i & ") est inférieure ou égale à 6. Merci de vérifier" 'on sélectionne la feuille incriminée Sheets(i).Select 'on stoppe et sort de la procédure Exit Sub Else 'SINON on applique l'autofill .Range("C6").AutoFill Destination:=.Range("C6:C" & drLig) End If End With Next i Application.ScreenUpdating = True End Sub
Alice
Non, je ne suis pas étudiante, et encore moins en informatique, sinon je n'aurais pas de telles difficultés.
C'est simplement pour m'épargner des tâches fastidieuses en utilisant à bon escient les outils créés à cette fin. Mais pour cela, il faut des connaissances que j'essaye d'acquérir, en attendant, je viens sur ce forum.
C'est simplement pour m'épargner des tâches fastidieuses en utilisant à bon escient les outils créés à cette fin. Mais pour cela, il faut des connaissances que j'essaye d'acquérir, en attendant, je viens sur ce forum.
pijaku
- Messages postés
- 12234
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 4 janvier 2021
Il faut des connaissances que j'essaye d'acquérir,
C'est tout à ton honneur...
en attendant, je viens sur ce forum.
Et bien continue, tu es la bienvenue!
A+ n'hésite surtout pas...
C'est tout à ton honneur...
en attendant, je viens sur ce forum.
Et bien continue, tu es la bienvenue!
A+ n'hésite surtout pas...
dlt-pan
- Messages postés
- 481
- Date d'inscription
- jeudi 17 mai 2007
- Statut
- Membre
- Dernière intervention
- 23 décembre 2014
bonjour
essaie :
Range("C6").Select
nbligne = Range("C65500").End(xlUp).Row
Selection.Autofill Destination:=Range(cells(6,3),cells(nbligne,3))
essaie :
Range("C6").Select
nbligne = Range("C65500").End(xlUp).Row
Selection.Autofill Destination:=Range(cells(6,3),cells(nbligne,3))
pijaku
- Messages postés
- 12234
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 4 janvier 2021
Bonjour,
Pour trouver, par VBA, la dernière ligne non vide d'une colonne, vous pouvez jeter un oeil à cette astuce CCM...
Pour trouver, par VBA, la dernière ligne non vide d'une colonne, vous pouvez jeter un oeil à cette astuce CCM...
pijaku
- Messages postés
- 12234
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 4 janvier 2021
Avez vous au moins pris le temps de :
- lire l'astuce?
- la tester?
.........
Testez déjà ceci dans votre classeur :
- lire l'astuce?
- la tester?
.........
Testez déjà ceci dans votre classeur :
Sub Test() Dim DernLigne As Long DernLigne = Range("C" & Rows.Count).End(xlUp).Row MsgBox DernLigne End Sub
Alice
J'ai bel et bien pris le temps de la lire et de la tester mais étant novice en VBA, je ne suis pas parvenue à l'adapter à mon cas.
Je vous remercie pour votre réponse, mais je ne vois pas où figure la cellule C6 à partir de laquelle je souhaite étendre ma formule; avez-vous pris le temps de lire la question?
Merci
Je vous remercie pour votre réponse, mais je ne vois pas où figure la cellule C6 à partir de laquelle je souhaite étendre ma formule; avez-vous pris le temps de lire la question?
Merci
pijaku
- Messages postés
- 12234
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 4 janvier 2021
Bien sur que j'ai lu votre question, sinon je n'y répondrais pas.
Je ne veux pas vous donner la solution "toute cuite" car cela ne vous servirait à rien...
C6 n'est pas importante dans l'histoire car c'est une cellule que l'on connait.
Ce que l'on veux connaitre c'est le numéro de la dernière ligne non vide de la colonne C; pour pouvoir étendre notre formule jusqu'à elle.
Non?
Donc, essayez la macro de test que je vous ai donné ci-dessus, elle devrait vous donner ce qu'il vous faut.
On l'adaptera à autofill après vos tests.
Je ne veux pas vous donner la solution "toute cuite" car cela ne vous servirait à rien...
C6 n'est pas importante dans l'histoire car c'est une cellule que l'on connait.
Ce que l'on veux connaitre c'est le numéro de la dernière ligne non vide de la colonne C; pour pouvoir étendre notre formule jusqu'à elle.
Non?
Donc, essayez la macro de test que je vous ai donné ci-dessus, elle devrait vous donner ce qu'il vous faut.
On l'adaptera à autofill après vos tests.
Je vous remercie pour votre retour.
Je viens de teste le nouveau code et... ça fonctionne!!! Ce qui me semblait être une formalité s'est avéré un peu plus complexe au vu du nombre d'échanges postés.
A présent, je ne parviens pas à l'intégrer dans mon code général, mais cela est une autre histoire. A moins que ça vous tente??
Je vous en remercie encore !
Concrètement, lorsque je la remplace par les lignes 4 et 5 du code proposé en solution, la formule s'étend sur la feuille Excel active mais pas sur les autres, alors que le reste du code est bien appliqué. Peut-être l'ai-je placé au mauvais endroit??
Merci
1-
Tu ne touches pas, c'est bien. Cela permet de ne pas rafraichir l'écran pendant la macro.
2-
Sélectionne la feuille 4. Utilité???? Je ne vois pas
3-
Boucle sur toutes les feuilles du classeur, à partir de la feuille 4, sans les sélectionner. Utilité? Aucune je pense.
4-
Peut être remplacé par :
5-
Peut être remplacé par :
6-
Cette formule coince à cause du R dans RC[9].
Qu'elle est ta formule exacte, telle qu'elle serait si tu la mettais directement dans une cellule excel, sans passer par VBA. (ex : = NB.SI(L:L;"score")
Afin de mieux vous faire comprendre le code, je vous en donne l'objectif: insérer, dans chaque onglet à partir du 4ème, une colonne dans laquelle on appliquera la formule qui comptera les cellules dans lesquelles se trouvera la mention "score" (=nb.si(L:L;"*score*") qui n'a pas fonctionné lors de votre test car j'ai mis une parenthèse en trop avant COUNTIF), que l'on étendra aux cellules suivantes de la colonne C du tableau.
Jusqu'ici, tout a fonctionné correctement avec le code présenté.
Il me faut à présent y intégrer le code que vous m'avez proposé afin qu'il entre dans la boucle.
Merci!
Cdlt