Faire deplacer des tableau sur la droite...

  • Initiateur de la discussion Initiateur de la discussion Guido
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Re : Faire deplacer des tableau sur la droite...

Re, salut Philippe,

Bien d'accord Philippe, si toutes les plages à décaler étaient alignées, il n'y aurait même rien à faire 😎

Pour revenir à ma macro, cette ligne neutralise le 2ème clic sur le bouton :

Code:
If Application.CountIf(Rows(c.Row), c) > 1 Then Exit Sub
Code:
Sub Mettre_en_forme()
Dim P As Range, n&, col%, c As Range, c1 As Range, lig&
Set P = ActiveSheet.UsedRange
n = Application.CountIf(Cells, "N°")
If n = 0 Then Exit Sub 'sécurité
Application.ScreenUpdating = False
col = P.Column + P.Columns.Count
For n = 1 To n
  If c Is Nothing Then
    Set c = Cells.Find("N°", , xlValues, , xlByRows)
    If Application.CountIf(Rows(c.Row), c) > 1 Then Exit Sub
  Else
    Set c = P.Find("N°", c)
  End If
  Set c1 = Rows(c.Row).Find("Crs.", c)
  If Not c1 Is Nothing Then
    lig = c.CurrentRegion.Rows.Count
    c.Resize(lig).Copy Cells(c.Row, col) 'facultatif
    c1.Resize(lig, col - c1.Column).Cut Cells(c.Row, col + 1)
  End If
Next
Range(Columns(col), Columns(Columns.Count)).AutoFit 'ajustement largeur
End Sub
Fichier (4).

A+
 

Pièces jointes

Re : Faire deplacer des tableau sur la droite...

Re,

Finalement je préfère ceci qui est nettement plus simple :

Code:
Sub Mettre_en_forme()
Dim n&, col%, c As Range, c1 As Range, lig&
Application.ScreenUpdating = False
n = Application.CountIf(ActiveSheet.UsedRange, "Crs.")
col = ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count
For n = 1 To n
  Set c = Cells.Find("Crs.", IIf(c Is Nothing, [A1], c), xlValues, , xlByRows)
  Set c1 = Rows(c.Row).Find("N°")
  If Not c1 Is Nothing Then
    lig = c1.CurrentRegion.Rows.Count
    c1.Resize(lig).Copy Cells(c.Row, col) 'facultatif
    c.Resize(lig, col - c.Column).Cut Cells(c.Row, col + 1)
  End If
Next
Range(Columns(col), Columns(Columns.Count)).AutoFit 'ajustement largeur
End Sub
Pas de bug si l'on clique plus d'une fois sur le bouton...

Fichier (5).

A+
 

Pièces jointes

Re : Faire deplacer des tableau sur la droite...

le problème est que les données à décaler ne se trouvent pas dans la même colonne pour tous les tableaux

il faudrait y remettre un peu d'ordre et ce code fera l'affaire


Re

Bien sur que si les saisies de mes donnees serait toute a la meme place se serait plus que facile,

c'est pour cela que je fais appel a Vous

Dans le fichier "les tableaux complet " les colonnes en gris sont vides mais des autres petit tableau auront leurs places

de la colonne A --> M seront utilisées ensuite, La colonne N seras Vide , et de O--->>>>AH cest la meme configuration

pour faire ce fameux decalage

J'espere qu'avec ses petites précisions on va y arriver ,

D'avance Merci

Guido
 

Pièces jointes

Re : Faire deplacer des tableau sur la droite...

Hum, la question n'a plus rien à voir avec ce qui a été fourni au départ...
En AO7 :
Code:
=INDEX($O7:$AI7;EQUIV(AO$6;$O$6:$AI$6;0))
Par contre il faudra modifier manuellement AO$6;$O$6 dans chacun des tableaux...
 
Re : Faire deplacer des tableau sur la droite...

Re,

Dites Guido je vous ai donné des solutions, ce n'est pas pour des prunes 🙂

A+



Le soucis ,j'ai preciser que je ne maitrise pas les macros,

ne te fache pas dsl de ne pas savoir.

c'est pour cela ,que j'ai poster un tableau qui seras definitif avec tes macros ou avec des formules.

Je te remercie pour ton travail ainsi que les membres qui participe pour le fichiers compliqué.

Avec tes macros je doit faire et jonglé avec les deux fichier et faire des copier coller ,voila ma situation

Merci pour ta comprehention

Amitiés

Guido
 
Re : Faire deplacer des tableau sur la droite...

Re,

Ma dernière macro s'applique sans problème à votre fichier du post #18.

J'ai simplement ajouté ceci à la fin pour supprimer les colonnes vides :

Code:
'---suppression des colonnes vides---
With ActiveSheet.UsedRange
  For n = .Columns.Count To 1 Step -1
    If Application.CountA(.Columns(n)) = 0 Then _
      .Columns(n).Delete xlToLeft Else Exit For
  Next
End With
Fichier joint.

A+
 

Pièces jointes

Re : Faire deplacer des tableau sur la droite...

Re

Merci job75

C'est bien comme ca que je désirais le fichier,

cela vas me facilite la tache,

Derniere demande...

quel est la possibilité de reinitialisé le fichier de base sans les donnees ...Merci

Sinon, je fais une sauvegarde du fichier vide et j'enregistre sous..

Merci encore

Amitiées

Guido
 
Re : Faire deplacer des tableau sur la droite...

Bonjour Guido, le fil, le forum,

Pour ne pas décaler les plages trop loin, il est mieux de supprimer les colonnes vides au début et à la fin :

Code:
Dim P As Range 'mémorise la variable

Sub Mettre_en_forme()
Dim n&, col%, c As Range, c1 As Range, lig&
Application.ScreenUpdating = False
SuppressionColonnesVides
n = Application.CountIf(P, "Crs.")
col = P.Column + P.Columns.Count
For n = 1 To n
  Set c = Cells.Find("Crs.", IIf(c Is Nothing, [A1], c), xlValues, , xlByRows)
  Set c1 = Rows(c.Row).Find("N°")
  If Not c1 Is Nothing Then
    lig = c1.CurrentRegion.Rows.Count
    c1.Resize(lig).Copy Cells(c.Row, col) 'facultatif
    c.Resize(lig, col - c.Column).Cut Cells(c.Row, col + 1)
  End If
Next
Range(Columns(col), Columns(Columns.Count)).AutoFit 'ajustement largeur
SuppressionColonnesVides
End Sub

Sub SuppressionColonnesVides()
Dim n&
Set P = ActiveSheet.UsedRange
For n = P.Columns.Count To 2 Step -1
  If Application.CountA(P.Columns(n)) = 0 Then _
    P.Columns(n).Delete xlToLeft Else Exit Sub
Next
End Sub
Les nouveaux tableaux sont maintenant placés en colonne AF au lieu de AM.

Fichier (2).

PS : si vous voulez conserver les tableaux initiaux travaillez sur une copie du fichier.

A+
 

Pièces jointes

Dernière édition:
Re : Faire deplacer des tableau sur la droite...

Re, un détail encore,

Dans la macro SuppressionColonnesVides il faut écrire :

For n = P.Columns.Count To 2 Step -1

Ainsi les macros peuvent être exécutées sur une feuille vide !

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
247
Réponses
14
Affichages
490
Réponses
7
Affichages
689
Réponses
1
Affichages
234
Réponses
1
Affichages
283
W
Retour