Forum Discussion

Re: macro VBA excel nommer une cellule

bernard_daniel_1950 

Problème 1 : vous déchargez le userform avant d'appeler RecupSauv, donc la valeur de la listbox n'existe plus. Solution:

Private Sub recupération_Click()
    Call recupsauv
    Unload Me
End Sub

Problème 2 : afficher correctement la date. Solution:

    Dim d As String
    If Choixsauv.Listsauve.ListIndex > -1 Then
        d = Format(Choixsauv.Listsauve, "dd/mm/yyyy")
    End If
    s = InputBox("entrez la date désirée, sous la forme 'jj/mm'.", _
            "Recherche de journée sauvegardée", d)
    • HansVogelaar's avatar
      HansVogelaar
      MVP

      bernard_daniel_1950 

      Le "listbox" sur Choixsauv est nommé ListBox1, pas listsauve

      Sub recupsauv()
          Application.ScreenUpdating = False
          'If MsgBox("Ceci va récupérer une journée enregistrée.", vbOKCancel, "Récupération de journée") = vbCancel Then
          'Exit Sub
          'End If
          Application.Goto Reference:="grille2"
          Selection.Copy
          Application.Goto Reference:="date"
          ActiveSheet.Paste
          Application.CutCopyMode = False
          Dim d As String
          If Choixsauv.ListBox1.ListIndex > -1 Then
              d = Format(Choixsauv.ListBox1, "dd/mm/yyyy")
          End If
      
          Application.Goto Reference:="sauvegarde"
          Do While ActiveCell <> d
              ActiveCell.Offset(1, 0).Activate
              If ActiveCell.Value = 99999 Then
                  MsgBox "Cete date n'existe pas!", , "Echec"
                  Application.ScreenUpdating = True
                  Range("a1").Select
                  Exit Sub
              End If
          Loop
          ActiveWorkbook.Names.Add Name:="debrec", RefersTo:=ActiveCell
          ActiveCell.Offset(1, 0).Select
          Do While ActiveCell.Value = ""
              ActiveCell.Offset(1, 0).Select
          Loop
          ActiveCell.Offset(-1, 6).Select
          Range(ActiveCell, Range("debrec")).Select
          Selection.Copy
          Range("date").Select
          ActiveSheet.Paste
      
          Application.CutCopyMode = False
          MsgBox "Journée du " & d & " récupérée! vous pouvez désormais transférer les données à Decalog."
      End Sub
      • bernard_daniel_1950's avatar
        bernard_daniel_1950
        Iron Contributor
        Encore merci; étourderie de ma part!
        Question que je vous pose à tout hasard: est il possible à une macro Excel d'agir sur un programme autre que Microsoft?
        Je copie une donnée dans Excel et voudrais la copier dans un programme qui n'a rien à voir.
        Je fais actuellement clic droit et coller, mais si je pouvais automatiser...
  • bernard_daniel_1950's avatar
    bernard_daniel_1950
    Iron Contributor
    Bonjour,
    Je rencontre un phénomène étrange (du moins pour moi!):
    si je rentre dans des userforms (boutons...) des cellules liées contenant des formules, celle ci sont parfois "écrasée" lors de l'utilisation des uforms (la formule se transforme en valeur!).
    Pour être clair, si j'ai: =2=2 en formule, ça se transforme en : 4!
    Est-ce "normal", ou y a t-il quelque chose à faire?
    Ou alors le problème vient d'ailleurs?
    • HansVogelaar's avatar
      HansVogelaar
      MVP

      bernard_daniel_1950 

      C'est normal. Pour éviter cela, ne liez pas les zones de texte aux cellules, mais utilisez VBA pour transférer les valeurs entre les zones de texte et les cellules.

  • bernard_daniel_1950's avatar
    bernard_daniel_1950
    Iron Contributor
    Encore merci...
    J'ai plusieurs userforms où l'ordre "unload" précède le "call", sans problème?
    J'ai shunté la phase "inputbox... " pour entrer directement d dans la macro!

Resources