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

Comment trouver dernière colonne utilisée

  • Initiateur de la discussion Initiateur de la discussion Blues
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

Blues

Guest
Bonjour Forum adoré,

J'ai une ch'tite question concernant les fonctions / macros / VBA. Existe t'il une fonction ou une autre méthode, vu que c'est pour y introduire dans une macro, afin de trouver la dernière colonne utilisée (en peu comme le ferait la fonction recherche avec les lignes).

Merci bien...
 
Bonjour

Si tu cherches à connaitre la lettre de la derniere colonne non vide, a partir de la ligne 1 :

MsgBox Left$(Range("a1").End(xlToRight).Address(0, 0), (Range("a1").End(xlToRight).Column < 27) + 2)

si tu cherches à sélectionner cette colonne:

Range("a1").End(xlToRight).Select

Si tu cherches à selectionner la 1ère colonne vide de la ligne 1 :

Range("a1").End(xlToRight).Select
ActiveCell.Offset(0, 1).Select

Salut
Hervé
 
Bonjours Hervé,

Merci pour ta réponse, et désolé du retard. Ton premier exemple, est presque exactement ce que je cherchais, à ceci près que dans mon code, je suis censé remplir avec des formules mes 3 premières colonnes vides. Actuellement mon code est fait de manière à ce que ces formules - représentant des portefeuilles (en bourse) qu'on rajoute remplissent les col. O, P, Q, qui sont dans mon classeur toujours les premières colonnes vides. Cependant, j'aimerais faire qu'excel puisse trouver tout seul les colonnes vides, afin de pouvoir introduire plus d'un portefeuille.

C'est pour cela que ta première solution est presque parfaite. Elle me permet de trouver la dernière col utilisée, alors qu'il me faut la première qui soit vide. ALors pour cela je pensais qu'on pouvait seulement changer dans ta formule

MsgBox Left$(Range("a1").End(xlToRight).Address(0, 0), (Range("a1").End(xlToRight).Column < 27) + 2)

-->

MsgBox Left$(Range("a1").End(xlToRight).Address(0, 1), (Range("a1").End(xlToRight).Column < 27) + 2)

Mais cela ne fonctionne pas. Je ne dois pas chercher au bon endroit, pourrais-tu encore m'aider ?

Et encore une petite question. Dans mon code, comme je l'ai marqué plus haut, j'ai tout fait à travers des col. fixées à l'avance. Puis-je changer mon Range("01").Select --> Range("ta formule qui découvre la 1ère col vide").Select

Voici, si jamais ma formule actuelle, si tu en as besoin pour comprendre ce qui se passe.

Range("O1").Select
ActiveCell.FormulaR1C1 = "Return " + TXTx.Text
Range("O3").Select
ActiveCell.FormulaR1C1 = "=IF('S:\Excel\Reporting\Saisie des données\[performance des portefeuilles.xls]Feuil1'!R[3]C2<>"""",VLOOKUP(RC1,'S:\Excel\Reporting\Saisie des données\[performance des portefeuilles.xls]Feuil1'!C2:C52," + TXTcolreturn.Text + ",False),"""")"
'Formule d'importation des données à partir du classeur Reporting / Perf. des portefeuilles
'Importation des performances



Je te remercie grandement pour toute l'aide que tu m'apporte.
 
En fait, je n'avais pas regarder suffisament bien tes exemples, et quand j'ai voulu les tester j'ai fait une erreur. Ton dernier exemple, permet justement de trouver la première case de la première colonne vide.

Je continue en monologue quelques temps encore 🙂 , et si jamais je fais suivre mes informations ou mes questions. Qui sait ça pourrait toujours servir à d'autres personnes plus tard.

Merci encore
 
Bonjour

Pas trop le temps aujourd'hui.

Si tu veux l'adresse de la premiere colonne vide :

Dim n As String
Range("a1").End(xlToRight).Select
n = ActiveCell.Offset(0, 1).Address
MsgBox n

Salut
Hervé
 
Ok, voilà j'ai une petite question. Je suis arrivé à selectionné les celulles qui m'intéressé, écrire dedans les bonnes formules, mais je n'arrive aps à faire qu'ensuite depuis la dernière celulle active, elle copie son information dans les X celulles du dessous.

Avant j'utilisais cette méthode :

Range("O3").Copy Range("O4:O500")

Mais maintenant, vu que mes colonnes ne sont plus fixes, se n'est hélas plus possible.

Donc, comment mixer la formule ci-dessus, avec celle de Hervé :

Range("a1").End(xlToRight).Select
ActiveCell.Offset(0, 1).Select


Merci beaucoup
 
Je remercie grandement Galopin01 pour sa solution, que je fais suivre ici :

Bonjour,
D'abord je te donne une formule concentrée pour la première cellule libre,
Sub PremiereVide()
Range("a1").End(xlToRight)(1, 2).Select
End Sub

Ensuite si j'ai bien compris la question
la formule suivante recopie la cellule ligne 3 de la COLONNE ACTIVE jusqu'à la ligne 500
Sub Test()
k = ActiveCell.Column
For i = 4 To 500
Cells(3, k).Copy Cells(i, k)
Next
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

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