Décaler d'une colonne

julbute

XLDnaute Junior
Bonjour voici la petite macro, je suis novice la dedans, elle n'est certainement pas parfaite...
J'aimerai pouvoir décaler d'une colonne sur la gauche l'insertion de la variable "projet".
J'aimerai également modifier ce qui a été saisie pour Nom_client et Nom_projet.
Il faudrait que je puisse mettre tout en minuscule sauf la première lettre qui serait en Majuscule.

Si vous voyez des abérations sur la programmation.Je suis preneur d'une correction...


Merci de votre aide.

Sub Insert colonne()

Dim Cellule_en_cours As Range
Dim Cellule As String
Dim Celluledecal As String
Dim Nom_projet As String
Dim Nom_client As String
Dim Projet As String


Set Cellule_en_cours = ActiveCell

Nom_client = InputBox("Nom du client?")
Nom_projet = InputBox("Nom du projet ou lieu?")
Projet = Nom_client + " - " + Nom_projet
MsgBox (Projet)



Columns("A:B").Select
Selection.Copy

Cellule_en_cours.Select

Selection.Insert Shift:=xlToRight
Cellule_en_cours.Select
Cellule = Mid(ActiveCell.Address, 2, InStr(2, ActiveCell.Address, "$") - 2)

Celluledecal = Cellule + "1"

Range(Celluledecal).Value = Projet

End Sub
 

jp14

XLDnaute Barbatruc
Re : Décaler d'une colonne

Bonjour

Ci dessous la procédure modifiée.
Code:
Sub Insertcolonne()

Dim Cellule_en_cours As Range
Dim Cellule As String
Dim Celluledecal As String
Dim Nom_projet As String
Dim Nom_client As String
Dim Projet As String
Dim reponse As Variant

Set Cellule_en_cours = ActiveCell
If Cellule_en_cours.Row > 1 Then
    Call MsgBox("La cellule active doit être sur la ligne 1", vbCritical Or vbDefaultButton1, Application.Name)
    Exit Sub
End If
'
Do
'expression.InputBox(Prompt, Title, Default, Left, Top, HelpFile, HelpContextId, Type)
Do
        reponse = Application.InputBox(Prompt:="Nom du client?", Type:=2, Default:="", Title:="Donnée de base")
        Select Case reponse
            Case ""
                MsgBox "vous n'avez pas  fait de saisies!" & Chr(13) & "recommencez!", vbCritical, ""
            Case False
                Exit Sub
            Case Else
                Exit Do
        End Select
 Loop


Nom_client = UCase(Mid(reponse, 1, 1)) & LCase(Mid(reponse, 2, 254))
Do
        reponse = Application.InputBox(Prompt:="Nom du projet ou lieu ?", Type:=2, Default:="")
        Select Case reponse
            Case ""
                MsgBox "vous n'avez pas  fait de saisies!" & Chr(13) & "recommencez!", vbCritical, ""
            Case False
                Exit Sub
            Case Else
                Exit Do
        End Select
 Loop

Nom_projet = UCase(Mid(reponse, 1, 1)) & LCase(Mid(reponse, 2, 254))
Projet = Nom_client + " - " + Nom_projet
Select Case MsgBox("Nom du client :" & Nom_client _
                   & vbCrLf & "Nom du projet ou lieu :" & Nom_projet _
                   & vbCrLf & "" _
                   & vbCrLf & "Etes vous d'accord ?" _
                   , vbYesNoCancel Or vbInformation Or vbDefaultButton1, "Confirmation saisie")

    Case vbYes
        Exit Do
    Case vbCancel
        Exit Sub
    Case vbNo
        
End Select
Loop


Columns("A:B").Select
Selection.Copy

Cellule_en_cours.Select

Selection.Insert Shift:=xlToRight
Cellule_en_cours.Select
Cellule = Mid(ActiveCell.Address, 2, InStr(2, ActiveCell.Address, "$") - 2)

Celluledecal = Cellule + "1"

Range(Celluledecal).Value = Projet

End Sub

Gestion des doutons des boites d'entrée.
Vérification de la saisie.
Contrôle de la position de la cellule active ( ligne 1)

A tester

JP
 

julbute

XLDnaute Junior
Re : Décaler d'une colonne

Super!
effectivement j'ai de gros progrés à faire...

J'ai une petite requete suplèmentaire.
Lorsque je me positionne sur la cellulle "BL1".
L'insertion des colonnes se fait bien en BL1, mais le texte se met dans la cellule"BN1", alors que j'aimerai qu'elle se met dans la cellule "BM1".

Merci
 

julbute

XLDnaute Junior
Re : Décaler d'une colonne

re:
Ma question n'est pas précise...

Ce que je voulais dire, c'est que j'ai un tableau qui va de la colonne "AC" à la colonne "HR" ( pour le moment).
Je doie inserer à des positions différentes des colonnes avec des infos déja prés rempli (colonne A1 et B1)

Ces deux colonnes doivent s'inserer parfois entre deux autres projets.
Je choisie une cellule.Lorsqu'elle est choisi je lance la macro, qui insere les deux colonnes et inscrit le Nom du projet dans la ligne "1".

Ce qui ne fonctionne pas comme je veux aujourd'hui c'est que l'inscription du projet se fait une colonne à coté des deux colonnes que la macro à inserer.
Non pas à position de départ plus 1 colonnes, mais position de départ plus 2 colonnes.Ce qui fait que le nom du projet se trouve à coté des deux colonnes "A&B" que j'ai inserer.

Je ne sais pas si je suis plus clair

RB
 

jp14

XLDnaute Barbatruc
Re : Décaler d'une colonne

Bonsoir

La variable "Cellule_en_cours" permet de connaitre
Cellule_en_cours.Column permet de connaitre la colonne

en écrivant cells(Cellule_en_cours.row,Cellule_en_cours.Column) on écrit dans la cellule active
cells(Cellule_en_cours.row,Cellule_en_cours.Column+1) on écrit dans la cellule à droite de la cellule sélectionnée.

JP
 

julbute

XLDnaute Junior
Re : Décaler d'une colonne

Bonsoir,

voici la macro fonctionnant parfaitement comme je le voulais.

Merci beaucoup.
------------------------
Sub Insertcolonne()

Dim Cellule_en_cours As Range
Dim Cellule As String
Dim Celluledecal As String
Dim Nom_projet As String
Dim Nom_client As String
Dim Projet As String
Dim reponse As Variant

Set Cellule_en_cours = ActiveCell
If Cellule_en_cours.Row > 1 Then
Call MsgBox("La cellule active doit être sur la ligne 1", vbCritical Or vbDefaultButton1, Application.Name)
Exit Sub
End If
'
Do
'expression.InputBox(Prompt, Title, Default, Left, Top, HelpFile, HelpContextId, Type)
Do
reponse = Application.InputBox(Prompt:="Nom du client?", Type:=2, Default:="", Title:="Donnée de base")
Select Case reponse
Case ""
MsgBox "Vous n'avez pas fait de saisies!" & Chr(13) & "recommencez!", vbCritical, ""
Case False
Exit Sub
Case Else
Exit Do
End Select
Loop


Nom_client = UCase(Mid(reponse, 1, 1)) & LCase(Mid(reponse, 2, 254))
Do
reponse = Application.InputBox(Prompt:="Nom du projet ou Lieu ?", Type:=2, Default:="")
Select Case reponse
Case ""
MsgBox "Vous n'avez pas fait de saisies!" & Chr(13) & "recommencez!", vbCritical, ""
Case False
Exit Sub
Case Else
Exit Do
End Select
Loop

Nom_projet = UCase(Mid(reponse, 1, 1)) & LCase(Mid(reponse, 2, 254))
Projet = Nom_client + " - " + Nom_projet
Select Case MsgBox("Nom du client :" & Nom_client _
& vbCrLf & "Nom du projet ou lieu :" & Nom_projet _
& vbCrLf & "" _
& vbCrLf & "Etes vous d'accord ?" _
, vbYesNoCancel Or vbInformation Or vbDefaultButton1, "Confirmation saisie")

Case vbYes
Exit Do
Case vbCancel
Exit Sub
Case vbNo

End Select
Loop

Columns("A:B").Select
Selection.Copy

Cellule_en_cours.Select
Selection.Insert Shift:=xlToRight
Cells(ActiveCell.Row, ActiveCell.Column + 1).Value = Projet

End Sub
--------------------------------
 

Discussions similaires

Statistiques des forums

Discussions
312 355
Messages
2 087 552
Membres
103 588
dernier inscrit
Tom59300Tom