Bonjour tt le monde
je suis débutant en vb et j'ai un classeur dont je m'interresse à une colonne qui presente des texts avec des cellules vides, et puisque la liste est trés longues, je veux quelqu'un qui m'aide à réaliser un code qui me permet de choisir les 3 premières caractères de chaque cellule non vide et l'inscrit dans la cellule suivante qui est vide dans le sens du haut vers le bas et merci in finiment.
Voici l'exemple que je veux:
Bonjour cnt
Merci beaucoup pour l'attention que tu as donné à mon problème, mais en éxecutant ce code rien ne s'est passé il se peut que j'ai pas su comment l'executer
Très génereux d'avoir m'expliquer un peut ce code et comment l'executer
Bonjour
La procédure peut être placée dans un module pour être appelée soit par un click d'un objet (ex: commandbutton, etc...) ou de quelque autre façon (action dans UserForm, ...).
Il faut évidement attribuer à la variable "Colon", la colonne de la plage qui t'intéresse
La colonne concernéé peut être passée en argument à la Sub :
Sub TroisPremieres( By Val Colon as Integer )
Dim plage As Range, c As Range, quoi As String
... suite code ...
Merci beaucoup ça a très bien marché avec le premier code, mais un petit problème c'est que la première ligne etant non vide ne se transforme pas et si la transformation est faite, elle ne se fait qu'a partir de la cellule dont la suivante est vide voir l'exemple comme suit:
,
ce que je veux reélement c'est introduire un paramettre qui me permet d'appliquer le code à tous les mots qui commencent par exemple par "q" et qui s'inscrivent dans la cellule suivante même si elle est non vide à condition qu'elle ne commence pas par "q" voir l'exemple si dessus
Dim plage As Range, c As Range, quoi As String, Oldquoi As String, Colon As Integer, carac As String
Colon = 1
carac = "q"
Set plage = Range(Cells(1, Colon), Cells(10000, Colon).End(xlUp))
For Each c In plage
If Not IsEmpty(c) Then
quoi = Left(c.Value, 3)
If Left(quoi, 1) = carac Then
oldquoi = quoi
End If
End If
c.Offset(, 1) = oldquoi
Next
par contre si le premier mot ne commence pas par le caractère de choix, ici "q", que doit-on faire?
Bonjour cnt
Merci beaucoup beaucoup beaucoup, c'est bien ce que je veux et ceci m'a tellement satisfait
Pour ta question apropos de la lettre "q" il n'y a pas de problème parcequ'elle est fixe et inchangeable.
Merci encore une fois et que dieu te protege.
A bientôt.
Re,
Mon code prend en compte la dernière cellule non vide par la référence détectée par ce qui est en rouge
Set plage = Range(Cells(1, Colon),Cells(10000, Colon).End(xlUp))
Daccord CNT, et execuser moi si je suis un peux génant,
Est ce que c'est possible maintenant d'executer cette macro à partir d'un bouton d'une application acces? Ou bien la convertion de cette macro excel en acces tout en réalisant le même travail?
Merci.
Encore c'est moi, je veux vraiment que tu m'aide sur ce petit problème, j'ai etabli ce petit code par lequel j'ai voulu executé une macro excel 2007 depuis acces2007
Private Sub Commande8_Click()
Dim strMonFichierExcel As String
MsgBox strMonFichierExcel 'Uniquement pour vérifier si le chemin est correct
Dim appExcel As Object
Set appExcel = CreateObject("Excel.Application")
appExcel.Visible = true
With appExcel
.Workbooks.Open strMonFichierExcel
.Run "PERSONAL.XLSB!macro1" 'cette macro je l'ai creé dans un classeur de macro personnel
End With
Set appExcel = Nothing
End Sub
Mais le message suivant me perturbe: "Erreur d'execution 1004 Erreur definie par l'application ou par l'objet" Fin du message. Je ne sais quoi faire?
Merci beaucoup de m'aider.
Bonjour
l'erreur que tu mentionnes est due à ".Run ....". Alors question ? si c'est un autre classeur il faut qu'il soit ouvert, ce que tu ne dis pas. Pour pouvoir exécuter les macros de PERSONAL.XLSB , celui-ci doit ce trouver dans la même instance Excel, ce qui ne semble pas être le cas.
Décrit plus explicitement l'environnement de ton projet, pour voir plus clair.
A+
Bonjour cnt
Merci pour tes aides et conseils pertunants, pour éviter tous les problèmes liés avec l'ouverture des classeurs et macro excel, je veux que tu me transforme le code que tu m'a offert à savoir:
Sub convertir()
Dim plage As Range, c As Range, quoi As String, Oldquoi As String, Colon As Integer, carac As String
Colon = 1
carac = "J"
Set plage = Range(Cells(2, Colon), Cells(100000, Colon).End(xlUp))
For Each c In plage
If Not IsEmpty(c) Then
quoi = Left(c.Value, 6)
If Left(quoi, 1) = carac Then
Oldquoi = quoi
End If
End If
c.Offset(, 0) = Oldquoi
Next
End Sub
en un code que je peux exécuterà partir d'un userform à l'aide d'un click sur un btn.
Merci beaucoup.