cs_Dominike
Messages postés70Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention 6 mars 2010
-
27 févr. 2008 à 19:30
cs_Dominike
Messages postés70Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention 6 mars 2010
-
28 févr. 2008 à 19:03
Bonsoir à tous !
Nouveau petit souci pour lequel je ne parviens à trouver la solution seul pour le moment.
Je n'ai pas eu de difficulter à trouver la syntaxe VBA pour que la macro sélectionne la première cellule vide d'une ligne du style ...
"Selection.End(xlToRight)(1, 2).Select"
En revanche, elle ne fonctionne que lorsqu'il n'y a pas de cellule fusionnées.
Or sur cette ligne, toutes les cellules sont groupées (c'est à dire fussionées) par deux.
QQ'un aurait-il l'amabilité de m'apporter de l'aide ?
Un grand merci par avance pour le coup de pouce
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 27 févr. 2008 à 20:10
Salut
Le VB de Excel est du VBA --> Catégorie modifiée
Rien compris à ton histoire de cellule vide.
Aucun rapport avec la ligne que tu fournis.
Dans quelle commande apparait cette bribe de code ?
Donne un exemple concret de la présentation de cellule qui pose problème.
Par exemple :
A B C
1 xxx | | |
2 xxxxx | |
3 xxx | xxxxx | |
La fusion de cellule fait que, simplement, seule la première colonne existe.
En l'occurence dans cet exemple, B2 n'existe pas.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Dominike
Messages postés70Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention 6 mars 2010 27 févr. 2008 à 23:05
Pardonnez si je n'ai pas été clair !
Je précise donc ma demande.
J'ai un bouton qui active une Macro1() dont l'objectif est de'ouvrie la feuille 1 du classeur et selectionner comme cellule active la première cellule vide de la ligne 2
Sub Macro1()
Sheets("Feuil1").Select
Range("A2").Select
Selection.End(xlToRight)(1, 2).Select
End Sub
avec cette macro, si A2, B2, C2 et D2 ne sont pas vides, à l'ouverture de la feuille 1 avec la macro, la cellule active sera E2.
Ca fonctionne parfaitement.
Mais si A2 et B2 sont fusionnées, comme C2 et D2 (etc...) cette macro va sélectionner C2-D2 à l'ouverture alors que la prochaine fusion vide est E2-F2.
Ai-je été plus clair ?
cs_Dominike
Messages postés70Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention 6 mars 2010 28 févr. 2008 à 00:03
Je pense avoir trouvé :
Sub Macro1()
Sheets("Feuil1").Select
Range("A2").Select
Selection.End(xlToRight).Select
Selection.Offset(0, 1).Select
End Sub
Merci tout de même et à bientôt sur le forum.
cs_Dominike
Messages postés70Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention 6 mars 2010 28 févr. 2008 à 00:14
Et flûte et zut et crotte ....! Ca ne fonctionne plus après la deuxième série de 2
Problème toujours non résolu donc.
Je continue mes recherches, mais si le coeur vous en dit, c'est avec plaisir car mes nuits sont courtes parfois...
Bonne nuit quand même à vous et à bientôt.
-Dominike -
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 28 févr. 2008 à 00:31
Premièrement, tu devrais te débarrasser de l'habitude de fusionner les cellules. Ça va t'apporter des emm... Tu peux utiliser le formet de cellules et aligner sur plusieurs colonnes, ce qui est beaucoup mieux. Et le "look" est identique.
Pour ton problème, il faut que tu partes de la droite et que tu revienne vers la gauche pour trouver la première cellle vide sur une ligne.
2 méthodes que je préfère:
1- S'il y a au moins une donnée dans la feuille, cette méthode te donnera la première colonne vide, peu importe si les lignes ne sont pas de longueurs identiques
Colonne = Cells.Find("*", Range("A1"),,,xlByColumns,xlPrevious).Column + 1
2- Si tu veux déterminer la ligne (ici 1 ) sur laquelle tu cherches cette cellule vide
Colonne = Cells(1, Columns.Count).End(xlToLeft).Column + 1
Dans les 2 cas, il faut ajouter +1 parce que les formules recherchent la dernière colonne remplie
Le même principe peut être utilisé pour trouver la dernière ligne. Il suffit de modifier un peu...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
cs_Dominike
Messages postés70Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention 6 mars 2010 28 févr. 2008 à 19:03
Ben c'était effectivement tout bête. Il faut partir de la droite pour aller à gauche et même avec des cellules fusionnées ça fonctionne impec...
Sub Macro1()
Sheets("Feuil1").Select
Range("A2").Select
Selection.End(xlToLeft).Select
Selection.Offset(0, 1).Select
End Sub
Merci à vous et plus particulièrement à MPI2
A bientôt de toute évidence !