Correction macro

Bonjour,

ci-joint une macro qui fonctionne mais qui me génère un msgbox de confirmation que je souhaite éliminer.

Range("I2:I21").Select

Selection.TextToColumns Destination:=Range("K2"), DataType:=xlDelimited, _

TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _

Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _

:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), _

TrailingMinusNumbers:=True

Il faudrait une sélection de la dernière cellule non vide de la colonne "i" et en destination la dernière cellule vide de la colonne "k".

j'ai essayé :

Range("i65000").End(xlup).Row

Selection.TextToColumns Destination:=Range("k65000").End(xlup).Row+1

, DataType:=xlDelimited, _

TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _

Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _

:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), _

TrailingMinusNumbers:=True

mais ça ne marche pas

qq1 peut il m'aiguiller ?

d'avance merci

xavier

Bonsoir Xavier, bonsoir le forum,

J'avoue ne pas bien comprendre le code car je n'ai jamais utilisé ces fonctions. Toutefois, si je compare le premier et le second code je me rend compte que dans le premier tu sélectionnes : Range("I2:I21").Select et pas dans le second : Range("i65000").End(xlup).Row... Est-ce ça le problème ?

Sinon, pour éviter les messages d'Excel

Application.DisplayAlerts = False

qu'il ne faut surtout pas oublier de remettre à [Vrai] en fin de code avec :

Application.DisplayAlerts = True

Bonsoir

Le code sert à convertir une cellule via le menu "donnée", "convertir" d'Excel.

En fait c'est suite au remplissage automatique d'un formulaire.

Les cellules de la colonne "i" sont renseignées, je souhaite donc atteindre la dernière cellule de cette colonne générée par le formulaire et transférer les données de cette dernière (qui sont séparées par des points virgules) à partir de la colonne K en atteignant donc sa première cellule vide.

je sais pas si c'est clair

Re,

J'aurais aimé que tu me dises au moins si mes remarques étaient justes ou pas !...

Désolé,

oui c'est bien ça le problème.

En final je ne souhaite pas modifier l'intégrité des cellules mais seulement la dernière saisies en i.

Re,

Si tu avais daigné fournir un fichier exemple j'aurais pu testé !... Essaie ça :

Cells(Application.Rows.Count, "I").End(xlUp).TextToColumns Destination:=Cells(Application.Row.Count, "K").End(xlUp).Offset(1, 0), _
   DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _
   Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), _
   TrailingMinusNumbers:=True

Bonjour,

aucun souci pour le fichier, certain site ne préfére pas que l'on fasse.

ci-joint mon fichier.

inutile de te dire que je débute en VBA donc je tatonne. il se peut qu'il y ai des choses qui te semble bizarre

En plus de la problématique énoncé ci dessus, j'essaye d'intégrer ce code à mon bouton "ajout" :

Sheets("compétence").activate

Range("e9").select

Activeworkbook.refreshall

qui me permetterait je pense d'actualiser automatiquement un croisée dynamique .

merci en tout cas pour tes retours

Re,

Arf ! Mais c'est fou ça !... Tu me dis même pas si ce que je t'ai proposé fonctionne ! Comme je t'ai expliqué dans mon premier post ce sont des actions que je n'utilise jamais. Par conséquent, il faut que tu me dise toi si ça fonctionne ou pas P... de B... de M... !... (Purée de Bananes Mexicaines évidemment...).

merci pour ton retour,

mais inutile de s'énerver, comme je te l'ai dit je tatonne et j'apprends. 8)

et non ça ne marche pas

en tout cas merci pour le temps consacré

Re,

Je m'énerve pas j'explique !...

Le pire quand on propose une solution c'est d'avoir comme réponse : ça me marche pas !

Sans rien d'autre... Qu'est-ce qui n'a pas marché ? À nous de le découvrir !... C'est trop fatiguant d'expliquer, certainement !...

Tu as beau être nouveau, tâtonner et apprendre, il n'empêche que tu pourrais au moins faire l'effort d'expliquer clairement le résultat obtenu. Je t'avoue que devant autant de je-m’en-foutisme, je n'ai même pas ouvert ton dernier fichier. Je verrai plus tard quand j'aurais fini de résoudre des cas où les personnes sont plus réactives...

j'y consacre le temps que je peux y consacrer, mais je te trouve qd même assez virulent dans les termes.

Mais aucun souci et milles excuses

msgbox d'erreur = erreur de compilation erreur de syntaxe en retour.

ci-joint le code que j'ai mis

Private Sub btnAjout_Click()
Dim i As Integer, ctrl, lastRow As Long, Competence As String, Mobilite As String

ctrl = Array("txtNom", "txtPrenom", "txtAdresse", "txtCP", "txtVille", "txtTelephone", "txtMail")

    For i = 0 To Me.lbMobilite.ListCount - 1
        If Me.lbMobilite.Selected(i) Then
            Mobilite = Mobilite & Me.lbMobilite.List(i) & ";"
        End If
    Next i

    For i = 0 To Me.lbCompetence.ListCount - 1
        If Me.lbCompetence.Selected(i) Then
            Competence = Competence & Me.lbCompetence.List(i) & ";"
        End If
    Next i

With Sheets("Base de donnée intervenants")
 lastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1

 For i = 1 To 7
   .Cells(lastRow, i) = Me.Controls(ctrl(i - 1))
 Next

 .Cells(lastRow, 8) = Competence
 .Cells(lastRow, 9) = Mobilite
 .Cells(lastRow, 10) = Me.Controls("txtCommentaire")

End With

MsgBox "Votre intervenant a bien été ajouté à votre base de données", vbOKOnly + vbInformation, "Confirmation"

Application.Goto Sheets("Compétences").Range("A3")
ActiveWorkbook.RefreshAll

Application.Goto Sheets("Base de donnée intervenants").Range("A3")

Cells(Application.Rows.Count, "I").End(xlUp).TextToColumns Destination:=Cells(Application.Row.Count, "K").End(xlUp).Offset(1, 0), _
  DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _
  Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), _
   railingMinusNumbers:=True

End Sub

Re,

Oui tu as raison j'ai été assez virulent, je le confesse. Mais. cela vient du fait qu'à chacune de mes propositions tu es resté muet...

Ne t'inquiète pas, si j'ai une grande gueule je reste quand même à l'écoute et je vais essayer de te dépatouiller ça dès que je peux...

Re,

Et ça ! C'est pas virulent ?!...

'procédure permettant d'ajouter un nouvel enregistrement dans la base de donnée'

Private Sub btnAjout_Click()
Dim O As Worksheet
Dim i As Integer, ctrl, lastRow As Long, Competence As String, Mobilite As String

Set O = Worksheets("Base de donnée intervenants")
ctrl = Array("txtNom", "txtPrenom", "txtAdresse", "txtCP", "txtVille", "txtTelephone", "txtMail")
For i = 0 To Me.lbMobilite.ListCount - 1
    If Me.lbMobilite.Selected(i) Then
        Mobilite = Mobilite & Me.lbMobilite.List(i) & ";"
    End If
Next i
For i = 0 To Me.lbCompetence.ListCount - 1
    If Me.lbCompetence.Selected(i) Then
        Competence = Competence & Me.lbCompetence.List(i) & ";"
    End If
Next i

lastRow = O.Cells(Rows.Count, 1).End(xlUp).Row + 1
For i = 1 To 7
    O.Cells(lastRow, i) = Me.Controls(ctrl(i - 1))
Next
O.Cells(lastRow, 8) = Competence
O.Cells(lastRow, 9) = Mobilite
O.Cells(lastRow, 10) = Me.Controls("txtCommentaire")
MsgBox "Votre intervenant a bien été ajouté à votre base de données", vbOKOnly + vbInformation, "Confirmation"

'Application.Goto Sheets("Compétences").Range("A3")'inutile
ActiveWorkbook.RefreshAll

O.Cells(Application.Rows.Count, "I").End(xlUp).TextToColumns Destination:=O.Cells(Application.Rows.Count, "I").End(xlUp).Offset(0, 2), _
    DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True

End Sub

merci,

j'ai encore le message d'erreur, avec le surlignement de :

Private Sub btnAjout_Click() en jaune

et

If Me.lbMobilite.Selected(i) Then en bleue


message d'erreur :

erreur de compilation, erreur de syntaxe

Re,

Chez moi pas de problème avec ton fichier et le code proposé. Teste...

6xavier-v02.xlsm (59.44 Ko)

ça marche nickel.

merci bcp c'est génial, Vraiment Virulent

Bonsoir Thautheme,

je reviens vers toi pour 2 choses que je n'arrive pas à résoudre.

- A chaque nouvelle intégration dans mon formulaire u message d'erreur apparaît : "cette cellule contient déjà des données voulez vous les remplacer " alors qu'elles sont vides (pour choix multiselect pour compétence et domaine)

- je cherche à pouvoir incrémenter un numéro automatique à mon formulaire à chaque nouvelle entrée que j'effectue, j'ai effectué diverses tentatives mais = échec

j'ai signalé sur le code vba les modif que j'ai apporté depuis notre dernier échange.

je te joints le fichier.

si tu as le temps de jeter un œil c'est top

merci à bientot

Bonjour thautheme,

j'ai avancé un peu sur le sujet, cijoint le fichier, mais c'est pas encore ça

Rechercher des sujets similaires à "correction macro"