Copier coller une collonne dont le nom de champs est saisi

benjamin -  
pijaku Messages postés 13513 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

7 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  2. 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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Je ne suis pas ton frère...
      0
    2. benjamin
       
      excusez moi!
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
  3. 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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
    2. benjamin
       
      Merci
      Je viens de corriger, mais ça ne marche toujours pas.
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      peux tu copier-coller tout ton code ici.....................
      0
  4. 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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
  7. 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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
  8. 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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Je ne sais pas.
      Sans le fichier je ne peux pas te répondre...
      0