VBA Excel sélectionner la première colonne vide

Résolu/Fermé
Jerome - 4 juil. 2022 à 22:51
 Jerome - 19 juil. 2022 à 12:15
Bonjour,

Une nouvelle fois je viens faire appel à votre aide. J'ai créé grâce à l'enregistreur automatique une macro pour écrire sur la première colonne vide de la ligne 1
J'ai du coup sélectionné la colonne C1 et j'ai fait "ctrl + flèche droite" et encore une fois flèche à droite.

Range("C1").Select
Selection.End(xlToRight).Select
Range("R1").Select

Seulement voilà à la lecture de mon code il m'écrit sélection de la dernière cellule donc jusque là pas de problème, mais après il me sélectionne la cellule R1 qui est sûrement ma 1ère colonne vide, mais d'une semaine sur l'autre la sélection ne sera pas forcément la cellule R1 mais peut être S1 ou T1 ou U1 ou AA1 etc.

Sauriez vous comment réaliser ce code ?

Encore une fois merci pour votre aide,

Amicalement
Jérôme

Configuration: Windows / Chrome 103.0.0.0

29 réponses

Re,

Oui c'est bien ça. 

La cellule en ligne 29 et colonne 9 est la 1ere en haut à gauche du TCD5. Par contre les TCD4 et TCD5 dépendent de la fin du 3 (selon sa longueur) donc c’est des inconnus au départ.

'''Variable Haut du TCD3 = troisième cellule vide vers la droite après le TCD1

    HTCD3 = Cells(1, CTCD + 3).Select

'''Variable dernière ligne remplie de l'onglet TCD du TCD3 de la colonne E

    DLTCD3 = Sheets("TCD").Columns(5).Find("*", , , , xlByColumns, xlPrevious).Row

'''Variable haut du TCD4

    HTCD4 = Cells(DLTCD3 + 9, 5).Select

'Variable Haut TCD5 - Selectionner la deuxième cellule vide à droite du TCD 4

    HTCD5 = Cells(DLTCD3 + 9, 9).Select

Mais du coup dans cette variable, je ne vois pas quoi changer pour trouver la dernière colonne remplie du TCD5

CTCD5 = Sheets("TCD").Rows(1).Find("*", , , , xlByColumns, xlPrevious).Column

Petite question, pourquoi ne puis-je pas utiliser HTCD5 à la fois en colonne et en ligne ? ActiveCell.FormulaR1C1 = "=GETPIVOTDATA(""IEP - Venue/Passage""," & "TCD!R" & HTCD5 & "C" & HTCD5 & " )"

Merci pour ton aide ?

Amicalement

Jérôme

0

Re,

Merci beaucoup. Effectivement C9 est en dur. J'ai essayé 

ActiveCell.FormulaR1C1 = "=GETPIVOTDATA(""IEP - Venue/Passage""," & "TCD!R" & HTCD5 & "C9" & " )"

et j'ai une erreur #REF! car il va chercher i255 ???

HTCD5 = normalement I20

Voici la ligne dans le tableur.

=LIREDONNEESTABCROISDYNAMIQUE("IEP - Venue/Passage";TCD!$I$255 )

J’aurais une autre question, j'ai besoin d'inscrire la date du jour + du texte à la suite.

J'ai fait la formule 

ActiveCell.FormulaR1C1 = "=TODAY()& "" test"""

Pour copier/coller en valeur sauf que la date se met en code 44759 même quand je met en format date. Saurais tu comment faire ?

Merci pour ton aide,

Amicalement

Jérôme

0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
17 juil. 2022 à 19:35

La valeur de HTCD ne peut pas être I20 !!!  je le répète ce doit un nombre donnant le n° de ligne où débute le TCD en l’occurrence 29 d'après ton message précédent

Quand à la date il faut indiquer le format d'écriture du texte :

  exemple  ActiveCell.FormulaR1C1 = "=TEXT(TODAY(),""jj/mm/aa"")  & "" ggg"""

mais tu  pourrais mettre "jjjj jj mmmm aaaa" si tu veux une date longue, ou toute autre forme d'écriture que tu souhaite (avec des -, avec le jour en abrégé ..)


0

Bonjour Via,

Un très très très grand merci. Oui en effet c'était I20, mais je l'avais modifier pour faire un test et vérifier s'il fallait absolument tomber sur le résultat ou si n'importe quelle cellule du TCD fonctionnait.

Par contre, la formule va chercher la ligne i255

ActiveCell.FormulaR1C1 = "=GETPIVOTDATA(""IEP - Venue/Passage""," & "TCD!R" & HTCD5 & "C9" & " )"

=LIREDONNEESTABCROISDYNAMIQUE("IEP - Venue/Passage";TCD!$I$255 )

Super un très grand merci pour la date ça fonctionne parfaitement 

Amicalement

Jérôme

0

Après vérification, voici les résultat que je ne comprends pas

HTCD5 = 255 ?

HTCD4= 255 ?

HTCD3 = 255 ?

HTCD2 = -1 ?

Amicalement

Jérôme

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
18 juil. 2022 à 14:16

Bonjour Jérôme

Quelle valeur a la variable HTCD5 ?

Mets comme je te l'avais suggéré une ligne MsgBox juste avant ta formule ActiveCell.... pour voir quelle valeur justement, apparemment c'est 255 mais ça ne correspond pas à la réalité

Quelle est la formule qui te permet de trouver HTCD5 ?


0

Bonjour Via,

Désolé de ne pas être clair. J'ai créé fichier pour que ce soit peut être plus simple. C'est en fin de la Macro liste TE, travaille sur la ''Feuille Suivi global''

https://www.cjoint.com/c/LGsnmeCGf3D

Sinon entendu, je vais mettre un MSGbox devant mes variables et ça va me renvoyer la cellule c'est bien ça ?

TCD1 = Cells(1, 1).Select

TCD2 = HTCD2 = Cells(DLTCD + 9, 1).Select

TCD3 = HTCD3 = Cells(1, CTCD + 3).Select

DLTCD3 = Sheets("TCD").Columns(5).Find("*", , , , xlByColumns, xlPrevious).Row

HTCD4 = Cells(DLTCD3 + 9, 5).Select

HTCD5 = Cells(DLTCD3 + 9, 9).Select

Encore merci

Amicalement

Jérôme

0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
18 juil. 2022 à 16:42

Re,

Comme je te l'ai déjà dit HTCD5 = Cells(DLTCD3 + 9, 9).Select fait une sélection mais ne recherche pas la ligne du TCD5 !!!  Quand on met un Msgbox  HTCD5 (c'est la 1ere chose à faire si on a un doute) cela renvoie bien 255 (pourquoi je ne sais pas !)

En fait ce que tu veux c'est trouver la ligne de l'en-tête du TCD  placé en colonne I, c'est à dire la ligne avec le titre Étiquettes de données, c'est celle-ci dont on a besoin dans la formule

donc avant la ligne

ActiveCell.FormulaR1C1 = "=GETPIVOTDATA(""IEP - Venue/Passage""," & "TCD!R" & HTCD5 & "C9" & " )"

mets cette instruction :

HTCD5== WorksheetFunction.Match("Étiquettes de lignes", Sheets("TCD").Range("I:I"), 0) qui va trouver la bonne ligne


0

Re,

Merci beaucoup et pour les explications qui sont également très clair. En effet, mes HTCD1/2/3/4/5 sont en effet des sélections et non une recherche... Il faut que je revois toutes mes variables.

Merci pour l'explication des MsgBox, je le ferai dorénavant.

Quant à la dernière exécution, c'est également parfait et je t'en remercie très sincèrement

A bientôt

Amicalement

Jérôme

0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
18 juil. 2022 à 18:33

Bien ☺

Bonne suite et à une prochaine fois

Cdlmnt

Via


0

:-) à toi aussi

0