Copier coller une collonne dont le nom de champs est saisi

benjamin -  
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour les amis !
Je suis confronté à un problème en VBA pour lequel je sollicite votre appui technique. J'ai un fichier nommé tampon et un autre nommé APP DNB. Je désire réaliser une macro me permettant de copier la colonne (d'une feuille du fichier tampon) dont le nom de champs est saisi dans un inputbox et la coller dans une feuille du classeur APP DNB.
Après avoir exécuté la syntaxe ci-dessous, cela ne me donne aucun résultat ni de message d'erreur. S'il vous plait aidez-moi les amis !!
Voici la syntaxe :
Sub cum()
Dim ip
Dim j
ip = InputBox("Veuillez renseigner un champs! " & Chr(10) & "Par Exemple : PLF 2013", "CHOIX D'UN CHAMPS!!!")
For j = 1 To 1000
  If Workbooks("Tampon.xlsx").Worksheets("Dep").Cells(1, j).Value = "ip" Then
    j = CInt(j)
    Workbooks("Tampon.xlsx").Worksheets("Dep").Columns("j").Copy Workbooks("APP DNB.xlsm").Worksheets("Feuil25").Range("B1")
  Else
    msgbx = ("ip& n'est pas un champs du classeur tampon")
  End If
Next j
End sub
A voir également:

7 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

ip est une variable :
Dim ip

Tu lui affectes une valeur :
ip = InputBox("Veuillez renseigner un champs! " & Chr(10) & "Par Exemple : PLF 2013", "CHOIX D'UN CHAMPS!!!")


Mais après tu t'en sert mal. La syntaxe "ip" ne fait pas référence à ta variable ip, mais au texte "ip".
Donc, dans :
If Workbooks("Tampon.xlsx").Worksheets("Dep").Cells(1, j).Value = "ip" Then

vire les guillemets autour de ip pour obtenir :
If Workbooks("Tampon.xlsx").Worksheets("Dep").Cells(1, j).Value = ip Then

Cordialement,
Franck
0
benjamin
 
Merci Mon frère!
Je vois. ça marche. seulement, il masque la colonne de destination (B1). en plus, une fois que je saisi par exemple PLA 2013, il devrait rechercher et copier toute la colonne ayant pour nom de champs PLA 2013. Ici ce n'est pas le cas, mais il copie toujours la même colonne de numéro J du fichier tampon. Il s'intéresse donc pas au texte saisi.

Aide moi ,on frère!
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Je ne suis pas ton frère...
0
benjamin
 
excusez moi!
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Si tu as lu et compris mon explication ci-dessus à props des variables, tu te rends compte qu'il s'agit de la même erreur....
Columns("j") ne corresponds pas à Columns(j).........
0
benjamin
 
Merci Pijaku!
Ça marche à merveille.
Par contre j'ai prévu l'affichage de ce message "ip& n'est pas un champs du classeur tampon" si le texte saisi dans l'inputbox ne correspond pas à aucun titre de champs du fichier tampon. Mais cela ne fonctionne pas. En effet, pas de message d'erreur ni de résultat après avoir saisi expressément un texte ne faisant pas partie des titres de champs.

Je suis vraiment un débutant en VBA. J'ai soif de votre assistance technique.
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Pour la troisième fois sur ce sujet : même erreur. Tu confonds "ip" et ip...
Essaye :
msgbx = (ip & " n'est pas un champs du classeur tampon")
0
benjamin
 
Merci
Je viens de corriger, mais ça ne marche toujours pas.
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
peux tu copier-coller tout ton code ici.....................
0
benjamin
 
Voici la synthaxe!

Sub cum()
Dim ip
Dim j
ip = InputBox("Veuillez renseigner un champs! " & Chr(10) & "Par Exemple : PLF 2013", "CHOIX D'UN CHAMPS!!!")
For j = 1 To 1000
If Workbooks("Tampon.xlsx").Worksheets("Dep").Cells(1, j).Value = ip Then
j = CInt(j)
Workbooks("Tampon.xlsx").Worksheets("Dep").Columns(j).Copy Workbooks("APP DNB.xlsm").Worksheets("Feuil25").Range("B1")
Else
msgbx = (ip & " n'est pas un champs du classeur tampon")
End If
Next j
End sub
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
1- que contient Workbooks("Tampon.xlsx").Worksheets("Dep").Cells(1, j).Value?
2- que contient ip?
3- Ou as tu trouvé la syntaxe msgbx?
4- Pourquoi toujours collé dans la même colonne : Workbooks("APP DNB.xlsm").Worksheets("Feuil25").Range("B1") ?
0

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

Posez votre question
benjamin
 
1) c'est le titre des champs
2) c'est un texte saisi ki doit figurer dans la liste des champs de la feuille du classeur
3)msgbox (cè une erreur)
4)je ne colle toujours pas dans la même colonne. Puisque je suis à la phase d'essai, je modifie la référence de la plage a chaque essai.
.

Après avoir rectifié le msgbox , ça marche. Seulement j'ai un problème de boucle folle. C'est à dire le message d'erreur s'affiche sans cesse; et ce, même si la valeur renseignée dans le inputbox est un titre de champs.

Merci de t'intéresser à ma préoccupation
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,
Essaye ceci :
Sub cum()
Dim ip As String
Dim rngTrouve As Range

ip = InputBox("Veuillez renseigner un champs! " & Chr(10) & "Par Exemple : PLF 2013", "CHOIX D'UN CHAMPS!!!")
Set  rngTrouve = Workbooks("Tampon.xlsx").Worksheets("Dep").Rows(1).Cells.Find(ip, lookat:=xlwhole)
If rngTrouve Is Nothing Then
    msgbx = (ip & " n'est pas un champs du classeur tampon")
Else
    Workbooks("Tampon.xlsx").Worksheets("Dep").Columns(j).Copy Workbooks("APP DNB.xlsm").Worksheets("Feuil25").Range("B1")
End If
End sub
0
benjamin
 
Merci!!
Permettez moi de savoir ce que represente j dans
Workbooks("Tampon.xlsx").Worksheets("Dep").Columns(j).Copy Workbooks("APP DNB.xlsm").Worksheets("Feuil25").Range("B1")


?
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
j est une erreur.....
Pardon!
Sub cum()
Dim ip As String
Dim rngTrouve As Range
Dim Col As Integer

ip = InputBox("Veuillez renseigner un champs! " & Chr(10) & "Par Exemple : PLF 2013", "CHOIX D'UN CHAMPS!!!")
Set  rngTrouve = Workbooks("Tampon.xlsx").Worksheets("Dep").Rows(1).Cells.Find(ip, lookat:=xlwhole)
If rngTrouve Is Nothing Then
    msgbx = (ip & " n'est pas un champs du classeur tampon")
Else
    Col = rngTrouve.Column
    Workbooks("Tampon.xlsx").Worksheets("Dep").Columns(Col).Copy Workbooks("APP DNB.xlsm").Worksheets("Feuil25").Range("B1")
End If
End sub
0
benjamin
 
Merci!
le message d'erreur s'affiche quand il y a lieu.
Par contre lorsque le texte saisi est un titre de champs, la copie ne s'exécute pas.
je reçois dans ce cas un message d'erreur incompatibilé de type. le debogage souligne la ligne Workbooks("Tampon.xlsx").Worksheets("Dep").Columns(Col).Copy Workbooks("APP DNB.xlsm").Worksheets("Feuil25").Range("B1")
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Je ne sais pas.
Sans le fichier je ne peux pas te répondre...
0