Comment trouver dernière colonne utilisée

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...
 
H

Hervé

Guest
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é
 
B

Blues

Guest
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.
 
B

Blues

Guest
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
 
B

Blues

Guest
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
 
B

Blues

Guest
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
 

Discussions similaires

Réponses
7
Affichages
433

Statistiques des forums

Discussions
312 613
Messages
2 090 231
Membres
104 454
dernier inscrit
alaindeloin.1976